Nagiosの起動エラー時に設定ファイルの問題の原因を知る方法

Nagiosの設定はどこに問題があるか分かりにくくて困っていたんですが、やっと調べる方法を知りました。
スクリーンショット 2014-04-02 22.11.54
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があるけどホストがないという問題がたまに発生するので、注意です。

タイトルとURLをコピーしました