Dovecot kvóta kihasználtság ellenőrzése Nagios-szal

Az alábbi check_quota Nagios plugin segítségével a Dovecot maildir-ben tárolt postafiókok  kvóta kihasználtságát ellenőrizhetjük.
Az adatokat a virtuális felhasználók adatait tároló MySQL adatbázisból kérdezi le, a kihasználtságot pedig a maildirsize fájl feldolgozásával kalkulálja. Ez a fájl általában a Maildir könyvtárban van elhelyezve, minden felhasználóé külön-külön. Az első sora a quota értéket tartalmazza, a továbbiak pedig a levelek méretét tárolják, így nincs dolgunk, mint a második sortól kezdődően összegezni a levelek méretét és az első sorban megadott értékhez hasonlítani.
A plugin kimenete a megadott warning vagy critical szintet meghaladó felhasználók neve és a kihasználtásg %-an kifejezve, továbbá a Perfirmance Data értékként az összes fiókhoz tartozó érték.

A pluginban be kell állítani a MySQL adatbázishoz való castlakozáshoz a felhasználónevet, jelszót (esetleg hostnevet). Futásához két argumentumot igényel, az első a Warning, a második a Critical szint százalékban.

Következzen maga a plugin:
#!/bin/bash
WARNLIMIT=$1
CRITICALLIMIT=$2
USERLIST=""
EXIT_STATUS=0
DETAIL=""
OUTPUT=OK
VMDIR=/var/vmail/domain.hu/

for db_user in `mysql -uUSERNAME -p'PASSWORD' DATABASE -e "select maildir from mailbox where active = 1 and maildir like 'domain%' order by maildir;" | tail -n +2`
do
        user=`echo $db_user | sed 's/domain.hu\///' | tr -d "/"`
        if [ -e $VMDIR/$user/maildirsize ]
        then
                QUOTA_LIMIT=`head -n 1  $VMDIR/$user/maildirsize  | awk '{print $1}' | tr -d "S"`
                SUM=0
                for i in `tail -n +2  $VMDIR/$user/maildirsize  | awk '{print $1}'`
                do
                        SUM=`echo $SUM+$i | bc -l`
                done
                USED_PERCENT=`echo "$SUM/$QUOTA_LIMIT*100" | bc -l | cut -c -2 | tr -d "."`
                if [ $USED_PERCENT -gt $WARNLIMIT ]
                then
                        EXIT_STATUS=1
                        OUTPUT="WARNING user over limit:"
                        USERLIST="${USERLIST} $user - $USED_PERCENT%,"
                fi
                if [ $USED_PERCENT -gt $CRITICALLIMIT ]
                then
                        EXIT_STATUS=2
                        OUTPUT="CRITICAL user over limit:"
                        USERLIST="${USERLIST}$user - $USED_PERCENT%,"
                fi
                DETAIL="${DETAIL} $user - $USED_PERCENT%,"
        fi
done

echo "$OUTPUT $USERLIST | $DETAIL"
exit $EXIT_STATUS


Kulcsszavak: Nagios, Dovecot, levelezés, IMAP4, SMTP, quot, plugin, MySQL

Új hozzászólás: