2019/01/01(火)IPv6無効化環境でMuninをアップデートしたら逝っちゃった件

yum update で諸々アップデートしていたら

Cron Daemon さんからメールが来ました。

[FATAL] There is nothing to do here, since there are no nodes with any plugins. 
Please refer to http://munin-monitoring.org/wiki/FAQ_no_graphs at /usr/share/munin/munin-html line xx

サーバ監視ツールの「munin」が逝っちゃったようだ😣

/var/log/munin-node/munin-node.log を覗くと、

yyyy/mm/dd-HH:MM:SS Munin::Node::Server (type Net::Server::Fork) starting! pid(xxx)
Resolved [*]:4949 to [::]:4949, IPv6
Not including resolved host [0.0.0.0] IPv4 because it will be handled by [::] IPv6
Binding to TCP port 4949 on host :: with IPv6
yyyy/mm/dd-HH:MM:SS Server closing!

との怪しいログが...。

調べると、CPANモジュール「Net::Server」のドキュメントに情報がありました。

On my linux box which defaults to net.ipv6.bindv6only=0, the following is output.

perl -e 'use base qw(Net::Server); main->run(host => "*")'
 
Resolved [*]:8080 to [::]:8080, IPv6
Not including resolved host [0.0.0.0] IPv4 because it will be handled by [::] IPv6
Binding to TCP port 8080 on host :: with IPv6

IPv6無効化環境なのにMuninがIPv6を利用して動こうとしているようであることが推測されました。

WebサーバでIPv6に対応するメリットを現状はほとんど感じないので、なんとかIPv6無効のまま正常に動くように直したいと思いました。CPANモジュール「Net::Server」のドキュメントによると、以下のように書いてありました。

If you do not want or need IPv6, simply set ipv to 4, pass IPv4 along in the port specification, set $ENV{'IPV'}=4; before running the server, or uninstall IO::Socket::INET6.

IPv6を要しない場合、 $ENV{'IPV'}=4 (環境変数でIPv4を指定する)か IO::Socket::INET6 (というCPANモジュール)をアンインストール(cpanm -U IO::Socket::INET6)せよとのこと。

しかし、 /usr/share/munin/munin-html line xx の前に $ENV{'IPV'}=4 を挿入しても変わりありませんでした。

どうしようか悩みましたが、 vim /etc/munin/munin.conf で以下を追記してやると「Server closing!」を回避できたのでメモしておきます。

[localhost]
    address 127.0.0.1
    use_node_name yes

use_node_name yes はなくても動くんじゃないかと思っています(未検証)。

解決までmuninのグラフが途切れましたが、また止まった時が動き出しました。

fw_conntrack-day.png