Dovecot kvóta kihasználtság ellenőrzése Nagios-szal
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:
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