[nagios] nagios 4.1.1 でマップからホストのステータスが見えない場合の対策


皆さんこんにちは。監視、してますか? nagios 4.1.1 の環境でマップからホストのステータスを見ようとすると、 status.cgi が無い!と404エラーを返されてしまいました。解決策をggると・・・

こちらにそのものズバリの答えがありました。

map-links.html にある status.cgi へのリンクが間違っていたのが原因です。ソースコードを普通にコンパイルしてインストールした環境のnagios 4.1.1 では /usr/local/nagios/share/map-links.html が修正対象となります。見たらこんなコードでした。

a ng-href="{{params.cgiurl}}status.cgi

a ng-href="{{params.cgiurl}}cgi-bin/status.cgi

map-links.htmlでは3箇所くらい直さなきゃいけないのですが、ここはsedで一撃置換してしまいましょう。

sed -i "s/status.cgi/cgi-bin\/status.cgi/g" /usr/local/nagios/share/map-links.html

githubのissueでは「NagiosEnterprisesの4.1.2ベータで直すよー」と言ってるようですね。監視サーバーを大量に作ることはあまりないでしょうけれど、もしシェルスクリプトで構築する場合にはこんな処理を入れてあげるとよいでしょう。

MAPLINKSHTML=/usr/local/nagios/share/map-links.html
if [ 0 = $(cat ${MAPLINKSHTML} | egrep '(ng-href="{{params.cgiurl}}status.cgi)' > /dev/null ; echo $?) ];
then
[ ! -f ${MAPLINKSHTML}{,.orig} ] && cp -p ${MAPLINKSHTML}{,.orig}
sed -i "s/status.cgi/cgi-bin\/status.cgi/g" ${MAPLINKSHTML}
fi

誤ったコードをgrepしてその終了ステータスが0だったら置換するという処理です。将来的にこれがfixされたらifの条件式でスルーされます。それではよい監視ライフを!