Nagioshostで実行されるPerlカスタムスクリプト用にNagios/NSCAをセットアップしました。
次のように構成しました:
echo "myhost;myservice;1;Message"|/usr/local/nagios/libexec/send_nsca -to 10 -d ';' -c /etc/send_nsca.cfg -H localhost
それは完璧に動作します。
それで、私の質問ですが、NagiosまたはNSCAにパッシブチェックをカウントする方法はありますか?
つまりNagiosがmyservice
でmyhost
のアラートを受信する回数
注:カスタムスクリプトがサービスに対して「OK」を送信することはありません
Nsca.cfgでdebug = 1
を設定することにより、デバッグをsyslogに出力するようにnsca
(デーモン)を構成できます。デバッグオプションが設定ファイルに異なる値で複数回表示されないことを確認してください。表示されない場合は、上書きされる可能性があります。私に起こりました :)。
nsca.cfg:
# LOG FACILITY
# The syslog facility that should be used for logging purposes.
log_facility=daemon
# DEBUGGING OPTION
# This option determines whether or not debugging
# messages are logged to the syslog facility.
# Values: 0 = debugging off, 1 = debugging on
debug=1
CentOS7の/ var/log/messagesの出力例:
Sep 23 10:53:14 centos nsca[4504]: Starting up daemon
Sep 23 10:53:19 centos nsca[4504]: Handling the connection...
Sep 23 10:53:19 centos nsca[4504]: Time difference in packet: 0 seconds for Host myhost
Sep 23 10:53:19 centos nsca[4504]: SERVICE CHECK -> Host Name: 'myhost', Service Description: 'myservice', Return Code: '1', Output: 'Message'
Sep 23 10:53:19 centos nsca[4504]: Attempting to write to nagios command pipe
Sep 23 10:53:19 centos nsca[4504]: Command file '/var/spool/nagios/cmd/nagios.cmd' does not exist, attempting to use alternate dump file '/var/spool/nagios/cmd/nsca.dump' for output
Sep 23 10:53:19 centos nsca[4504]: End of connection...
次のステップは、ログを処理して必要な情報/番号を取得することです。それを行う方法はたくさんあります...
あなたが要求した例:Nagiosがmyhostでmyserviceのアラートを受信する回数
grep "SERVICE CHECK -> Host Name: 'myhost', Service Description: 'myservice'" /var/log/messages | wc -l
1
ここでは、ログの処理が表示され、条件に一致するエントリが1つあります。
スクリプトやプログラムができれば、ログにこのデータが記録されたら、パッシブチェックを送信する多くのクライアントホストでも非常にうまく機能するものを書くことができます。