muninのapache_accessesプラグインがHTTPSのサーバステータスページへアクセスできない問題に対応

OS: Ubuntu 18.04.1 LTS
Apache 2.4.35
munin-node 2.0.37-1ubuntu0.1

ApacheにSSLサーバ証明書を導入して以来、muninのapache_accessesプラグインの調子が頗る良くない。munin-run --debug apache_accesses を実行してもaccesses80.value Uとなるばかりでちっとも値をひらえていない。

図1. 値がひらえずグラフが途切れている様子

埒が明かぬのでapache_accessesプラグイン(/usr/share/munin/plugins/apache_accesses)の155行目に print $response->message;を挿入しても少し具体的な手がかりを得ようと試みたところこういう始末であった。

        my $response = $ua->request(HTTP::Request->new('GET',$url));
print $response->message;
$ sudo munin-run --debug apache_accesses
(snip)
Can't connect to 127.0.0.1:80 (SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number)accesses80.value U

https通信を希望しているのに80番ポートへアクセスしている為に、処理がわやになっているのかと思うから設定ファイルでURLとポートを指定した。

$ sudo vi /etc/munin/plugin-conf.d/munin-node
[apache_*]
 env.url https://127.0.0.1:%d/server-status?auto env.ports 443

改めてデバッグをおこなうと今度はこういう有様である。hostname verification failedという事は、詮ずればサーバ証明書のCommon Nameは127.0.0.1とはぜんぜんチグハグであることが原因であろうと思う。

$ sudo munin-run --debug apache_accesses
(snip)
Can't connect to 127.0.0.1:443 (hostname verification failed)accesses443.value U

LWP::UserAgentの手引きを紐解くとデフォルトではホストネームの検証が実施される模様である。此れを引っ込める為の記述をapache_accessesプラグインの150行目にしたためる。

my $ua = LWP::UserAgent->new(timeout => 30,
         agent => sprintf("munin/%s (libwww-perl/%s)", $Munin::Common::Defaults::MUNIN_VERSION, $LWP::VERSION));
$ua->ssl_opts(verify_hostname => 0);

あとはmunin-nodeを再起動して様子を伺っているとどうやら宜しく動作しているようである。

$ sudo systemctl restart munin-node
$ systemctl status munin-node
 munin-node.service - Munin Node
   Loaded: loaded (/lib/systemd/system/munin-node.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-22 04:28:32 JST; 3s ago
図2. 値が正常にひらえるようになった様子

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください