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のグラフが途切れましたが、また止まった時が動き出しました。
2017/12/31(日)monit からメールが来ないのを直した
数年前からエラーメールが来なくなっていたので直しました。
set mail-format
の from
を monit@hoge_vps
にしていてそれで昔は動いていたのですが、バージョンアップか何かで動かなくなりました。エラーログにはそれらしき文言は何も出ていませんでした。(Gmailで受け取っているのでGmail側で何か変わったのかもしれません。)
from
を xxx@yyy.com
というまともな形式に変えると、メールを受け取れるようになりました。
2014/03/02(日)Logwatch で Date::Manip unable to determine TimeZone が出た時の対処法
とりあえず、rootになって現在のタイムゾーンを確認します。
perl -MDate::Manip::TZ -le 'print Date::Manip::TZ->new->zone;'
正常ならば、「Asia/Tokyo」とか出力されます。
ここで自分の場合は、以下のエラーが出ました。
ERROR: failed to load Date::Manip::Lang::english: Can't locate YAML/Syck.pm in @IN
そのため、「cpanm YAML::Syck」でYAML::Syckをインストールしました。(cpanm がないなら「cpan YAML::Syck」でOK)これで自分の場合はエラーが解消されました。
「Date::Manip::TZ」のドキュメントによると、↓の順番でチェックするようなので、出力がおかしかったら妥当なタイムゾーンが出力されるまでいじりましょう。
main TZ
env zone TZ
file /etc/TIMEZONE
file /etc/timezone
file /etc/sysconfig/clock
file /etc/default/init
command "/bin/date +%Z"
command "/usr/bin/date +%Z"
command "/usr/local/bin/date +%Z"
cmdfield /bin/date -2
cmdfield /usr/bin/date -2
cmdfield /usr/local/bin/date -2
gmtoff
詳細は↓ http://search.cpan.org/~sbeck/Date-Manip-6.42/lib/Date/Manip/TZ.pod#DETERMINING_THE_SYSTEM_TIME_ZONE
2013/11/20(水)clamav-milter.sock : Permission denied の直し方(postfixを使っている場合)
アップデートしてこのエラーログが出たら↓のやり方で直るかも。
ユーザ「clam」(clamav-milter.sockの所有者)をグループpostfixに追加。
「clamav-milter.conf」を以下のように編集。
MilterSocketGroup postfix
MilterSocketMode 660
AllowSupplementaryGroups yes
clamav-milter を再起動。
いろいろ条件変えて試したけど、MilterSocketMode以外は必ずこのようにしないと動きませんでした。(clamav-milter.sock のパーミッションが勝手に000にセットされる)