Nagiosのアラート発報をコマンドラインから停止する。

2015-08-02 13.25.39-1

※写真と本文は関係ありません。


何台かサーバ止めたときに、アラートの発報もまとめて停止したい。
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切り替えが出来る。