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