何台かサーバ止めたときに、アラートの発報もまとめて停止したい。
NagiosのWeb画面からぽちぽちやっても出来るけど、コマンドラインで入力すれば一気に出来る。(ぽちぽちすると監視再開の時に戻し忘れてるかも知れない…)
nagios.cmdを使う。場所は環境によって、『/usr/local/nagios/var/rw/nagios.cmd』か『/var/rw/nagios.cmd』あたりにあるはず。
Usageはここにまとまっている。(ちょっと古い)
http://old.nagios.org/developerinfo/externalcommands/commandlist.php
たとえばサーバのサービス全部のアラートを一気に止めたいときは、DISABLE_HOST_SVC_NOTIFICATIONSを使う。
※host1が止めたいホスト名
#!/bin/sh
# This is a sample shell script showing how you can submit the DISABLE_HOST_SVC_NOTIFICATIONS command
# to Nagios. Adjust variables to fit your environment as necessary.
now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'
/bin/printf "[%lu] DISABLE_HOST_SVC_NOTIFICATIONS;host1\n" $now > $commandfile
disableとenableはセットなのでこんなスクリプト書いた。
#/bin/sh
now=$(date +%s)
commandfile='/usr/local/nagios/var/rw/nagios.cmd'
ENABLE_OR_DISABLE=$1
case ${ENABLE_OR_DISABLE} in
disable|DISABLE) SWITCH='DISABLE' ;;
enable|ENABLE) SWITCH='ENABLE' ;;
*) echo 'You input enable or disable. Abort!'
exit 1 ;;
esac
HOSTNAMES='kintai2012_jp
new_server
switch-l3
rtx1000
user_router'
for HOST in ${HOSTNAMES}
do
printf "[%lu] ${SWITCH}_HOST_NOTIFICATIONS;${HOST}\n" $now > $commandfile
printf "[%lu] ${SWITCH}_HOST_SVC_NOTIFICATIONS;${HOST}\n" $now > $commandfile
done
HOSTNAMESにリストされてるサーバを、
./disable_NOTIFICATIONS_nagios.sh disable
./disable_NOTIFICATIONS_nagios.sh enable
でアラートOn/Off切り替えが出来る。