50 lines
1.5 KiB
Bash
50 lines
1.5 KiB
Bash
|
#!/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
|