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

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となるばかりでちっとも数値をひらえない。

$ sudo vi /usr/share/munin/plugins/apache_accesses
154         my $response = $ua->request(HTTP::Request->new('GET',$url));
155 print $response->message;

埒が明かぬのでapache_accessesプラグインの155行目に 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

SSL3.0での接続が具合悪いように見えるけれどもそも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

改めてmunin-runコマンドで以ってデバッグをおこなうと今度はこういう有様である。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行目にしたためる。

$ sudo cp -av /usr/share/munin/plugins/apache_accesses{,.orig}
$ sudo vi /usr/share/munin/plugins/apache_accesses
148 my $ua = LWP::UserAgent->new(timeout => 30,
149                 agent => sprintf("munin/%s (libwww-perl/%s)", $Munin::Common::Defaults::MUNIN_VERSION, $LWP::VERSION));
150 $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

参考:
LWP::UserAgent – Web user agent class – metacpan.org

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

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