#!/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