Nagiosの設定はどこに問題があるか分かりにくくて困っていたんですが、やっと調べる方法を知りました。
Nagios – The Industry Standard in IT Infrastructure Monitoring
設定にエラーがあるとNagiosは起動しない。
Nagiosを起動スクリプトから立ち上げようと思った時に、設定ファイルに何かしらの問題があるとエラーとなって立ち上がりません。
$ sudo /etc/init.d/nagios start
Starting nagios:CONFIG ERROR! Start aborted. Check your Nagios configuration.
でもこのメッセージは少し不親切で、エラーがあるから設定を直さなければならない、ということしか分かりません。
ログにヒントはない。
Nagiosはログファイルを出力しているんですが、残念ながらエラーの原因などは分かりません。
$ sudo tail -5 /var/log/nagios/nagios.log
[1396443396] Local time is Wed Apr 02 12:56:36 UTC 2014
[1396443396] LOG VERSION: 2.0
[1396443396] Finished daemonizing... (New PID=30651)
[1396443416] Caught SIGTERM, shutting down...
[1396443416] Successfully shutdown... (PID=30651)
前回終了したときの正常なログだけが残っていて、今回の起動の失敗については、ログがありません。
そういうわけで、設定ファイルの問題にぶち当たった時は、少しずつ設定を変えて再起動をして試すことをしていました。これは面倒くさいです。
設定ファイルを確認するオプション
しかし、実は当然そんなことをする必要はなくて、Nagiosに、-vオプションというのがありました。
$ nagios
Nagios Core 3.5.1
# ...(略)...
-v, --verify-config Verify all configuration data
# ...(略)...
これを使うと、エラーの原因が分かります。
$ sudo nagios -v /etc/nagios/nagios.cfg
Nagios Core 3.5.1
# ...(略)...
Error: Could not find any hostgroup matching 'web' (config file '/etc/nagios/ec2nagios/web.cfg', starting on line 3)
Error processing object config files!
# ...(略)...
これで簡単に、web.cfgに問題があり、webというhostgroupに該当するホストがないことが分かります。
設定を修正して再度チェック
問題の設定を修正して、再度ファイルの検証をすると、エラーが消えました。
$ sudo nagios -v /etc/nagios/nagios.cfg
Nagios Core 3.5.1
# ...(略)...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
こうなれば、無事に起動することができます。
$ sudo /etc/init.d/nagios start
Starting nagios: done.
めでたし。
ファイルへの権限に注意
ちなみに、この検証コマンドを使うときに、設定ファイルへのアクセス権限が不足していたりすると、うまくいかないようです。
$ nagios -v /etc/nagios/nagios.cfg
Nagios Core 3.5.1
# ...(略)...
Error in configuration file '/etc/nagios/nagios.cfg' - Line 465 (Check result path is not a valid directory)
Error processing main config file!
# ...(略)...
このオプションを知ったことで、Nagiosの設定に悩まされなくて済むようになりそうです。
最後に宣伝ですが、Nagiosの設定の生成には、EC2Nagiosが便利です。
すべてのEC2インスタンスを自動でNagiosの監視下に追加するEC2Nagiosを作りました。
ただ上に載せたような、hostgroupがあるけどホストがないという問題がたまに発生するので、注意です。