logwatch
logwatch ist ein sehr nützliches Tool um Zusammenfassungen der Logdateien in einem bestimmten Intervall anfertigen zu lassen. Dabei unterstützt das Programm bereits eine Menge Software (z.B. Apache) die ebenfalls neben den Systemlogs durchsucht werden.
Links
Konfiguration
Für den Versand des Reports per mail wird standardmäßig ein Mailserver) installiert, bei Debian z.B. Postfix.
logwatch ist in Perl geschrieben und installiert ein Script in /etc/cron.daily
, d.h. es wird täglich vom cron-dienst gestartet.
eigene Logs hinzufügen
In Debian ist die Konfiguration sehr merkwürdig gestaltet.
Im Verzeichnis /usr/share/logwatch/dist.conf
werden die Einstellungen von /usr/share/logwatch/default.conf
angepasst. Wo in dist.conf
keine Einstellung vorgenommen wird, gilt dann die Einstellung in default.conf
. Die Einstellungen in /etc/logwatch
werden nicht berücksichtigt. Alles in allem sehr merkwürdig gestaltet.
Eine Möglichkeit wäre in /etc/logwatch
symlinks auf die geltenden Einstellungen anzulegen. Dazu wechselt man in /etc/logwatch
und löscht logwatch.conf, logfiles und services.
ln -s /usr/share/logwatch/dist.conf/logwatch.conf logwatch.conf ln -s /usr/share/logwatch/dist.conf/logfiles logfiles ln -s /usr/share/logwatch/dist.conf/services services ln -s /usr/share/logwatch/dist.conf dist.conf
LogFile = apache2/DOMAIN/*access.log LogFile = apache2/DOMAIN/*access.log.1 Archive = apache2/DOMAIN/*access.log.*.gz
/usr/share/logwatch/default.conf/logfiles
Aufruf
logwatch --print
gibt einen ausführlichen Report aus, ohne Parameter nimmt er als range (Zeitraum für die Auswertung) yesterday, also gestern an.
Mit dem Befehl
logwatch -range help
gibt er eine ausführliche Hilfe zu gültigen Zeiträumen aus.
Logwatch braucht für Zeitangaben jenseits von today
, yesterday
und all
das Modul Date::Manip
.
Dieses kann man mit
cpan -i 'Date::Manip'
oder
perl -MCPAN -e 'install Date::Manip'
nachinstallieren. Wenn man eine Paketverwaltung einsetzt kann man auch das Paket „libdate-manip-perl“ (Ubuntu, Debian?) installieren.
z.B. wenn ich einen wöchentlichen Zeitraum will (besser lesbar: 'since 7 days ago'):
logwatch --print --range 'since -7days'
In einem cronjob kann diese Zeile einen wöchentlichen Logreport an root versenden:
/usr/sbin/logwatch --mailto root --range 'since -7days'