皆さんこんにちは。監視、してますか? 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の条件式でスルーされます。それではよい監視ライフを!
[amazonjs asin="B00IXD2UQ8" locale="JP" title="Zabbix統合監視徹底活用──複雑化・大規模化するインフラの一元管理 Software Design plus"]