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となるばかりでちっとも値をひらえていない。
埒が明かぬので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