1
0
Fork 0
scripts-admin-quickndirty-p.../nagios/check_postfix_log.sh

50 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
TMPFILE=$( mktemp )
LOG=/var/log/mail.log
LOGTAIL_OFFSET=/tmp/logtail-maillog.offset
EXIT_STATUS=0
# Alors, petite explication
# Dans l'ordre :
# - logtail sur le log de Postfix
# - pflogsumm pour avoir les stats
# - head : on ne prend que les premières stats
# - sed (.*) : on dégage tout ce qui est entre parenthèse (les labels
# doivent être identiques d'un appel à l'autre, les valeurs contenues
# dans les parenthèses ne me semblent pas essentielles)
# - sed -n : on convertit l'affichage de 12345 label en 'label'=12345
# - sed smtpd : on rajoute le préfixe 'smtpd' aux labels idoines
# - sed km/000 : on multiplie par 1000/1000000 les valeurs suffixées par k ou m
# - tr : on met tout sur une même ligne
/usr/sbin/logtail2 -f "$LOG" -o "$LOGTAIL_OFFSET" \
| /usr/sbin/pflogsumm -h 0 -u 0 --smtpd_stats --zero_fill \
| head -n 30 \
| sed 's/[[:space:]]*(.*).*//g' \
| sed -n "s/^[[:space:]]*\([0-9]\+[kmg]\?\)[[:space:]]\+\([a-z \/\.]\+\).*/\'\2\'=\1/p" \
| sed 's/\(connections\|hosts\/domains\|avg. connect time\)/smtpd \1/' \
| sed -e 's/k$/000/' -e 's/m$/000000/' \
| tr "\n" " " \
>"$TMPFILE"
# Si la commande précédente s'est bien passée, on
# renvoie OK et les perfdata générées plus haut
if [ "$?" -eq "0" ] && [ -s "$TMPFILE" ]; then
printf "OK | "
cat "$TMPFILE"
printf "\n"
else
# Sinon, KO et warning (pas "critical", on est là juste pour des stats)
printf "KO \n"
EXIT_STATUS=1
fi
# Nettoyage du fichier temporaire
rm -f "$TMPFILE"
# Petit accès de parano
chmod 600 "$LOGTAIL_OFFSET"
exit $EXIT_STATUS