Včera jsem zjistil, že mám poškozený filesystém na zálohovacím disku. Oprava byla jednoduchá, stačilo pustit fsck, ale nepříjemné bylo, že jsem se o problému dozvěděl úplně náhodou, až při ručním spustění zálohy před velkou aktualizací systému. Aby se již podobná situace neopakovala, nastavil jsem démona syslog-ng, aby mi posílal chybové hlášky na mail. Když se vyskytne problém, může se ale zalogovat mnoho chyb najednou, a tak mi zanedlouho přišlo cca 300 mailů. Abych podobnému zahlcení do budoucna zabránil, napsal jsem následující skript, který pošle nejvýše jeden mail každých pět minut.
#!/bin/bash
#
# ./bin/syslog-mail.sh
# Posilat nejvyse jednu hlasku za pet minut
#
TO='xy@xy.cz'
FROM=$TO
last=`cat /var/tmp/syslog-mail-last-sent 2>/dev/null`
let last=last+300
now=`date +%s`
if [ "$last" -lt "$now" ]; then
read logline
logline=${logline/+([0-9<>])}
if [ "$logline" == "" ]; then
exit 0
fi
/usr/sbin/sendmail -t <<EOT
To: $TO
From: $FROM
Subject: Log Alert: $logline
$logline
`while read logline; do
logline=${logline/+([0-9<>])}
echo $logline
done`
--
This is an automatically generated message from $HOSTNAME
EOT
echo "$now" > /var/tmp/syslog-mail-last-sent
fi
Do /etc/syslog-ng/syslog-ng.conf jsem přidal tato pravidla:
destination mail-alert {
program("/home/kuba/bin/syslog-mail");
};
filter f_error {
not facility (mail) and level(err,crit,emerg);
};
log {
source(src);
filter(f_error);
destination(mail-alert);
};
Leave a Reply