nagios のプラグイン – check_quota

もうすぐ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 プラグインの書き方