19 marca 2008
Zachciało mi się otrzymywać maila podsumowującego dzień pracy mojego systemu. Trafiłem na dwa programy Logwatch (właściwie będący zbiorem skryptów) oraz Logcheck będący częścią app-admin/logsentry. Opiszę ten pierwszy ponieważ nie wymaga większej konfiguracji po zainstalowaniu by otrzymywać w miarę satysfakcjonujące podsumowania.
Zacznijmy od tego że będzie nam potrzebne coś do wysyłania maili. W moim przypadku skorzystałem ssmtp, bo już było, a jeśli nie ma to
# emerge mail-mta/ssmtp
oczywiście można skorzystać też z innego agenta przesyłania poczty. Skrzynkę mam na gmailu więc konfiguracja jest pod pasowana pod wymogi serwera smpt googla. W pliku /etc/ssmtp/ssmtp.conf powinno się znaleźć:
mailhub=smtp.gmail.com:587 rewriteDomain= #Ma być właśnie UseSTARTTLS a nie inne dostępne opcje z TLS UseSTARTTLS=YES AuthUser=nazwa_uzytkownika@gmail.com AuthPass=twoje_hasło FromLineOverride=YES
Dopisujemy jeszcze do /etc/ssmtp/revaliases
root:nazwa_uzytkownika@gmail.com:smtp.gmail.com:587
Maile możemy już wysyłać więc czas zająć się samym logowaniem
# emerge logwatch
Kopiujemy zawartość /usr/share/logwatch/ do /etc/logwatch (pozwoli to zachować oryginalną konfigurację, a pod uwagę brane będą ustawienia z /etc/logwatch)
# cp -R /usr/share/logwatch/ /etc
Nazwę folderu /etc/logwatch/default.conf zmieniamy na conf i przystępujemy do edycji /etc/logwatch/conf/logwatch.conf w którym to powinny znaleźć się następujące opcje
LogDir = /var/log TmpDir = /var/cache/logwatch MailTo = nazwa_uzytkownika@gmail.com MailFrom = Logwatch Print = No #mail będzie wysyłany po północy, i ma dotyczyć dni minionego więc: Range = yesterday #tu wybieramy szczegółowość raportu, dostępne są trzy poziomy: Low = 0, Med = 5, High = 10 Detail = 5 Service = All mailer = "sendmail -t"
Mamy już skonfigurowanego logwatch-a więc trzeba sprawić by uruchamiał się o zadanej porze, zbierał informacje z logów i przesyłał je na naszą skrzynkę. Po instalacji Logwatch w katalogu /etc/cron.daily/ powinien znajdować się plik 00-logwatch. Jeżeli go nie ma, tworzymy go i wypełniamy:
#!/bin/sh
if [ -x /usr/sbin/logwatch.pl ] ; then
exec /usr/sbin/logwatch.pl 2>&1 > /dev/null
fi
Ponieważ chcę aby podsumowanie dotyczyło całego dnia, ustawiłem w /etc/crontab wykonywanie codziennych czynności 5 minut po północy
5 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily
W zasadzie to wszystko. Problemem może być to, że gdy komputer nie jest akurat włączony o ustalonej godzinie nie zostanie wykonane zadanie. Z pomocą przybywa anacron, który wykonuje pominięte przez crona zadania standardowo 5 minut po uruchomieniu systemu.
# emerge anacron