もうすぐ2月…。
サーバ郡を監視しようと Nagios (Pligin)をインストールしまくってます。(60台近く…。あぁぁぁぁ。)
さらに、メールサーバの user quota を監視したいとおっしゃる…(ry。
スクリプトをゼロから書かないとダメかなぁと思ってたんですが。。探したらありました。
Code はこちら。↓
Nagios Exchange
THX Muthukumar Krithivasan さん
ちょっと改造しました。
改造点
- nagios ユーザで repquota コマンドが使えるように変更(→ sudo 経由で実行されるように visudo して nagios ユーザを追加、スクリプトにも suder を指定するようにした。)
- 出力結果が1行目しか出力されないので出力結果を改行をしないように変更。
しかし、スマートじゃないなぁ。まあいいか。
diff を晒してみる。
# diff -uNr /usr/local/nagios/libexec/check_quota_org /usr/local/nagios/libexec/check_quota --- /usr/local/nagios/libexec/check_quota_org 2008-01-28 13:03:00.000000000 +0900 +++ /usr/local/nagios/libexec/check_quota 2008-01-29 11:19:20.000000000 +0900 @@ -37,6 +37,9 @@ STATE_UNKNOWN=3 STATE_DEPENDENT=4 +# Commands +REPQUOTA='/usr/sbin/repquota' + print_version() { echo "$PROGNAME $VERSION $AUTHOR" } @@ -89,7 +92,27 @@ WARNUSER="" CRITUSER="" PREVUSER="" -for x in `repquota -a -s` + +# set suders +# visudo add following lines +# +# nagios ALL=(ALL) NOPASSWD: /usr/sbin/repquota +# +suders='root,nagios' +who=`whoami` + +if [ `expr $suders : ".*$who.*"` -eq 0 ] +then + mesg="UNKNOWN -" + exitstatus=$STATE_UNKNOWN + msgs='You are not suders. -> See [/usr/local/nagios/libexec/]check_quota source' + echo -e "$mesg $msgs" + exit $exitstatus +fi + +QUOTA_STATUS=`sudo $REPQUOTA -a -s` + +for x in $QUOTA_STATUS do if [ "$x" == "+-" ] then @@ -115,7 +138,7 @@ mesg="OK" exitstatus=$STATE_OK fi -msgs="CRITUSER : $CRITUSER \nWARNUSER : $WARNUSER \nOKUSERS : $OKUSERS" +msgs="CRITUSER $CRITUSER / WARNUSER $WARNUSER" echo -e "$mesg $msgs" exit $exitstatus
ここに、あとで Nagios Plugin の書き方を書く。
08/02/29 追記
google で『 nagios pligin 書き方 』 で検索すると2番目なんですが、書き方書いてないのに…。
というわけで別エントリで書くつもり。
08/03/03 追記
書いた!!→Ngagios プラグインの書き方