Logwatch: Unterschied zwischen den Versionen
K Dirkwagner verschob die Seite Linux/Logging/logwatch nach Logwatch |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
'''Logwatch''' ist ein Tool zur Analyse von Logdateien. | '''Logwatch''' ist ein Tool zur Analyse von Logdateien. | ||
= Allgemeines = | = Allgemeines = | ||
* Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten. | * Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten. | ||
* Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann. | * Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann. | ||
* Diese kann dann entweder als Datei weiterverarbeitet oder zum Versenden an einen Mailserver weitergereicht werden. | * Diese kann dann entweder als Datei weiterverarbeitet oder zum Versenden an einen Mailserver weitergereicht werden. | ||
Zeile 22: | Zeile 22: | ||
= Vorbereitung = | = Vorbereitung = | ||
* Falls die von Logwatch generierten Berichte per Mail versandt werden sollen, muss ein lokaler Mailserver vorhanden sein. | * Falls die von Logwatch generierten Berichte per Mail versandt werden sollen, muss ein lokaler Mailserver vorhanden sein. | ||
* Für Benutzer, die Logwatch für ihren SOHO-Server verwenden wollen, muss ein Mailserver aufgesetzt werden, der die Nachrichten an einen Smarthost weiterleitet. Dies geschieht am einfachsten mit Postfix. | * Für Benutzer, die Logwatch für ihren SOHO-Server verwenden wollen, muss ein Mailserver aufgesetzt werden, der die Nachrichten an einen Smarthost weiterleitet. Dies geschieht am einfachsten mit Postfix. | ||
Zeile 28: | Zeile 28: | ||
# apt install logwatch | # apt install logwatch | ||
* Die vordefinierte Einstellung ist ein zeitlich geplanter Start durch einen Cronjob. | * Die vordefinierte Einstellung ist ein zeitlich geplanter Start durch einen Cronjob. | ||
* Mehr dazu findet sich unter Automatisierung. | * Mehr dazu findet sich unter Automatisierung. | ||
* Möchte man Logwatch lieber per Hand im Terminal oder aus einem Shell-Skript starten, geschieht das mit dem Befehl logwatch. | * Möchte man Logwatch lieber per Hand im Terminal oder aus einem Shell-Skript starten, geschieht das mit dem Befehl logwatch. | ||
* Im Terminal wird nun ein Bericht ausgegeben, der zunächst die Grundinformationen über das Geschehen des letzten Tages enthält. | * Im Terminal wird nun ein Bericht ausgegeben, der zunächst die Grundinformationen über das Geschehen des letzten Tages enthält. | ||
* Die Ausgabe kann nun mit den Parametern aus der nachfolgenden Tabelle den eigenen Wünschen angepasst werden. | * Die Ausgabe kann nun mit den Parametern aus der nachfolgenden Tabelle den eigenen Wünschen angepasst werden. | ||
* Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden. | * Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden. | ||
Zeile 45: | Zeile 45: | ||
--range today Bestimmt den Zeitraum, über welchen berichtet werden soll (siehe logwatch --range help). | --range today Bestimmt den Zeitraum, über welchen berichtet werden soll (siehe logwatch --range help). | ||
* Weitere Parameter sind der Hilfe von Logwatch (logwatch --help) oder der Manpage zu entnehmen: logwatch. | * Weitere Parameter sind der Hilfe von Logwatch (logwatch --help) oder der Manpage zu entnehmen: logwatch. | ||
* Erfahrene Benutzer sollten auch den --service-Parameter beachten. | * Erfahrene Benutzer sollten auch den --service-Parameter beachten. | ||
* Mit diesem ist es möglich, den Bericht auf nur einen Dienst oder eine Dienstgruppe zu beschränken. | * Mit diesem ist es möglich, den Bericht auf nur einen Dienst oder eine Dienstgruppe zu beschränken. | ||
* Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services. | * Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services. | ||
= Beispiele = | = Beispiele = | ||
Einen Kurzbericht für den aktuellen Tag ausgeben: | Einen Kurzbericht für den aktuellen Tag ausgeben: | ||
logwatch --detail low --range today | logwatch --detail low --range today | ||
Einen detaillierten Bericht über den gestrigen Tag in einem Ordner als HTML-Datei mit Datum als Name ablegen: | Einen detaillierten Bericht über den gestrigen Tag in einem Ordner als HTML-Datei mit Datum als Name ablegen: | ||
logwatch --detail high --range yesterday --format html --filename ~/logwatch/$(date +%F).html | logwatch --detail high --range yesterday --format html --filename ~/logwatch/$(date +%F).html | ||
Einen Kurzbericht über die letzten 30 Tage generieren und versenden: | Einen Kurzbericht über die letzten 30 Tage generieren und versenden: | ||
logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de | logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de | ||
= Konfiguration = | = Konfiguration = | ||
== Automatisierung (Cron) == | == Automatisierung (Cron) == | ||
* In der Standardkonfiguration wird ein Skript namens /etc/cron.daily/00logwatch verwendet. | * In der Standardkonfiguration wird ein Skript namens /etc/cron.daily/00logwatch verwendet. | ||
* Dieses wird jeden Tag einmal gestartet und führt dann Logwatch mit den dort festgelegten Parametern aus. | * Dieses wird jeden Tag einmal gestartet und führt dann Logwatch mit den dort festgelegten Parametern aus. | ||
* Das Skript kann auch nach /etc/cron.weekly, /etc/cron.monthly oder – weniger sinnvoll – nach /etc/cron.hourly verschoben werden. | * Das Skript kann auch nach /etc/cron.weekly, /etc/cron.monthly oder – weniger sinnvoll – nach /etc/cron.hourly verschoben werden. | ||
* Möchte man Logwatch zu einem Zeitpunkt ausführen, der keinem der oben genannten entspricht, muss statt Anacron die normale, systemweite Crontab verwendet werden. | * Möchte man Logwatch zu einem Zeitpunkt ausführen, der keinem der oben genannten entspricht, muss statt Anacron die normale, systemweite Crontab verwendet werden. | ||
* Dazu muss das alte Logwatch-Skript gelöscht werden und ein neuer Eintrag in der Datei /etc/crontab hinzugefügt werden. | * Dazu muss das alte Logwatch-Skript gelöscht werden und ein neuer Eintrag in der Datei /etc/crontab hinzugefügt werden. | ||
Dieser sollte nach folgendem Schema aufgebaut sein: | Dieser sollte nach folgendem Schema aufgebaut sein: | ||
* | * * * * * /usr/sbin/logwatch <parameter> | ||
| | | | | | | | ||
| | | | | | +----- Wochentag (1 - 7) | ||
| | | | | +------- Monat (1 - 12) | ||
| | | | +--------- Tag (1 - 31) | ||
| | | +----------- Stunde (0 - 23) | ||
+------------- Minute (0 - 59) | +------------- Minute (0 - 59) | ||
Zeile 82: | Zeile 82: | ||
Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen: | Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen: | ||
0 | 0 2 * * 1,2,3,4,5 /usr/sbin/logwatch --detail low --format text --range yesterday --mailto nobody@ubuntuusers.de > /dev/null 2>&1 | ||
Der Inhalt der durch diesen Eintrag versandten E-Mail sähe wie folgt aus: | Der Inhalt der durch diesen Eintrag versandten E-Mail sähe wie folgt aus: | ||
################### Logwatch 7.3.6 (05/19/07) #################### | ################### Logwatch 7.3.6 (05/19/07) #################### | ||
Processing Initiated: Tue Apr 3 01:55:24 2012 | |||
Date Range Processed: yesterday | |||
( 2012-Apr-02 ) | |||
Period is day. | |||
Detail Level of Output: 0 | |||
Type of Output/Format: stdout / text | |||
Logfiles for Host: itchy | |||
################################################################## | |||
--------------------- dpkg status changes Begin ------------------------ | --------------------- dpkg status changes Begin ------------------------ | ||
Installed: | Installed: | ||
logwatch 7.3.6.cvs20090906-1ubuntu5 | |||
postfix 2.8.5-2~build1 | |||
---------------------- dpkg status changes End ------------------------- | ---------------------- dpkg status changes End ------------------------- | ||
--------------------- httpd Begin ------------------------ | --------------------- httpd Begin ------------------------ | ||
Requests with error response codes | Requests with error response codes | ||
404 Not Found | |||
/robots.txt: 2 Time(s) | |||
408 Request Timeout | |||
null: 1 Time(s) | |||
---------------------- httpd End ------------------------- | ---------------------- httpd End ------------------------- | ||
--------------------- Kernel Begin ------------------------ | --------------------- Kernel Begin ------------------------ | ||
WARNING: | WARNING: Kernel Errors Present | ||
[ 18.959797] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro ...: 1 Time(s) | |||
---------------------- Kernel End ------------------------- | ---------------------- Kernel End ------------------------- | ||
--------------------- pam_unix Begin ------------------------ | --------------------- pam_unix Begin ------------------------ | ||
su: | su: | ||
Sessions Opened: | |||
root -> nxpgsql: 7 Time(s) | |||
root -> daemon: 1 Time(s) | |||
root -> postgres: 1 Time(s) | |||
sudo: | sudo: | ||
Authentication Failures: | |||
simon(0) -> simon: 1 Time(s) | |||
---------------------- pam_unix End ------------------------- | ---------------------- pam_unix End ------------------------- | ||
--------------------- Connections (secure-log) Begin ------------------------ | --------------------- Connections (secure-log) Begin ------------------------ | ||
New Users: | New Users: | ||
postfix (119) | |||
New Groups: | New Groups: | ||
postfix (131) | |||
postdrop (132) | |||
Changed password expiry for users: | Changed password expiry for users: | ||
postfix : 1 Time(s) | |||
---------------------- Connections (secure-log) End ------------------------- | ---------------------- Connections (secure-log) End ------------------------- | ||
--------------------- SSHD Begin ------------------------ | --------------------- SSHD Begin ------------------------ | ||
Users logging in through sshd: | Users logging in through sshd: | ||
simon: | |||
192.168.100.185 (iPad-Simon.home.lan): 4 times | |||
Received disconnect: | Received disconnect: | ||
11: Normal Shutdown. Thank you! : 3 Time(s) | |||
---------------------- SSHD End ------------------------- | ---------------------- SSHD End ------------------------- | ||
--------------------- Sudo (secure-log) Begin ------------------------ | --------------------- Sudo (secure-log) Begin ------------------------ | ||
============================================================================== | ============================================================================== | ||
root => simon | root => simon | ||
------------- | ------------- | ||
/usr/bin/vlc - 1 Times. | /usr/bin/vlc - 1 Times. | ||
============================================================================== | ============================================================================== | ||
simon => root | simon => root | ||
------------- | ------------- | ||
Zeile 185: | Zeile 185: | ||
/usr/bin/apt-get - 1 Times. | /usr/bin/apt-get - 1 Times. | ||
/usr/bin/find - 1 Times. | /usr/bin/find - 1 Times. | ||
---------------------- Sudo (secure-log) End ------------------------- | ---------------------- Sudo (secure-log) End ------------------------- | ||
--------------------- Disk Space Begin ------------------------ | --------------------- Disk Space Begin ------------------------ | ||
Filesystem | Filesystem Size Used Avail Use% Mounted on | ||
/dev/sdb1 | /dev/sdb1 221G 9.0G 200G 5% / | ||
/dev/sda2 | /dev/sda2 75G 58G 18G 78% /home | ||
/dev/md0 | /dev/md0 917G 217G 654G 25% /home/simon/Archiv | ||
---------------------- Disk Space End ------------------------- | ---------------------- Disk Space End ------------------------- | ||
###################### Logwatch End ######################### | ###################### Logwatch End ######################### | ||
= Eigene Dienste = | = Eigene Dienste = | ||
* Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl. | * Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl. | ||
* Um so ein Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen. | * Um so ein Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen. | ||
* Diese mag auf den ersten Blick ein wenig verwirrend wirken, ergibt aber durchaus Sinn. | * Diese mag auf den ersten Blick ein wenig verwirrend wirken, ergibt aber durchaus Sinn. | ||
Zeile 215: | Zeile 215: | ||
/usr/share/logwatch/scripts/ Perl-Skripte zum Verarbeiten der Logfiles. | /usr/share/logwatch/scripts/ Perl-Skripte zum Verarbeiten der Logfiles. | ||
* In den *.conf-Verzeichnissen befinden sich noch je zwei weitere Verzeichnisse namens logfiles und services. | * In den *.conf-Verzeichnissen befinden sich noch je zwei weitere Verzeichnisse namens logfiles und services. | ||
* Im ersten wird das Logfile definiert, im letzteren die Dienste. | * Im ersten wird das Logfile definiert, im letzteren die Dienste. | ||
* Möchte man nun einen eigenen Dienst konfigurieren, erstellt man – falls nicht vorhanden – diese Verzeichnisstruktur unter /etc/logwatch/ und legt dort das Perl-Skript und die Konfigurationsdateien ab. | * Möchte man nun einen eigenen Dienst konfigurieren, erstellt man – falls nicht vorhanden – diese Verzeichnisstruktur unter /etc/logwatch/ und legt dort das Perl-Skript und die Konfigurationsdateien ab. | ||
* Es empfiehlt sich, einen bereits existierenden Dienst als Vorlage zu nutzen. | * Es empfiehlt sich, einen bereits existierenden Dienst als Vorlage zu nutzen. | ||
Version vom 31. August 2023, 11:30 Uhr
Logwatch ist ein Tool zur Analyse von Logdateien.
Allgemeines
- Es soll Systemadministratoren helfen, die Übersicht über alle Vorgänge auf einem Serversystem zu behalten.
- Logwatch durchsucht die Logdateien des Systems und generiert eine Kurzfassung daraus, deren Gestaltung individuell konfiguriert werden kann.
- Diese kann dann entweder als Datei weiterverarbeitet oder zum Versenden an einen Mailserver weitergereicht werden.
Zusätzlich zu den systemeigenen Logs können ohne weitere Konfiguration u.a. folgende Dienste überwacht werden:
- Firewall/ iptables, fail2ban
- DNS-Server: BIND
- DHCP-Server: ISC-DHCPD
- SSH und OpenVPN
- Apache
- Mailserver: Postfix/Sendmail/Exim/qmail/Dovecot/Courier
- SpamAssassin / Amavis-Spam-Virenfilter
- FTP-Server: PureFTPd / ProFTPD / vsftpd
- ClamAV
- Samba
- RAID
- Cron
- SASL
Vorbereitung
- Falls die von Logwatch generierten Berichte per Mail versandt werden sollen, muss ein lokaler Mailserver vorhanden sein.
- Für Benutzer, die Logwatch für ihren SOHO-Server verwenden wollen, muss ein Mailserver aufgesetzt werden, der die Nachrichten an einen Smarthost weiterleitet. Dies geschieht am einfachsten mit Postfix.
Installation
# apt install logwatch
- Die vordefinierte Einstellung ist ein zeitlich geplanter Start durch einen Cronjob.
- Mehr dazu findet sich unter Automatisierung.
- Möchte man Logwatch lieber per Hand im Terminal oder aus einem Shell-Skript starten, geschieht das mit dem Befehl logwatch.
- Im Terminal wird nun ein Bericht ausgegeben, der zunächst die Grundinformationen über das Geschehen des letzten Tages enthält.
- Die Ausgabe kann nun mit den Parametern aus der nachfolgenden Tabelle den eigenen Wünschen angepasst werden.
- Es kann dabei die Ausgabemethode, das Ziel der Ausgabe, die Detailtiefe und der Zeitraum des Berichts angegeben werden.
Startparameter
Parameter Beschreibung
--output stdout|mail|file Bestimmt die Ausgabemethode. (Default: stdout) --format text|html Bestimmt das Ausgabeformat. (Default: text) --filename X Bestimmt die Ausgabedatei X. --detail low|med|high Bestimmt die Detailtiefe des Berichts. (Default: low) --mailto X Versendet den generierten Bericht per Mail an die Adresse X. (setzt einen installierten MTA voraus) --range today Bestimmt den Zeitraum, über welchen berichtet werden soll (siehe logwatch --range help).
- Weitere Parameter sind der Hilfe von Logwatch (logwatch --help) oder der Manpage zu entnehmen: logwatch.
- Erfahrene Benutzer sollten auch den --service-Parameter beachten.
- Mit diesem ist es möglich, den Bericht auf nur einen Dienst oder eine Dienstgruppe zu beschränken.
- Die Namen der Dienste entsprechen den Namen des jeweiligen Konfigurationsskripts in /usr/share/logwatch/default.conf/services.
Beispiele
Einen Kurzbericht für den aktuellen Tag ausgeben:
logwatch --detail low --range today
Einen detaillierten Bericht über den gestrigen Tag in einem Ordner als HTML-Datei mit Datum als Name ablegen:
logwatch --detail high --range yesterday --format html --filename ~/logwatch/$(date +%F).html
Einen Kurzbericht über die letzten 30 Tage generieren und versenden:
logwatch --detail low --range 'between 30 days ago and yesterday' --mailto nobody@ubuntuusers.de
Konfiguration
Automatisierung (Cron)
- In der Standardkonfiguration wird ein Skript namens /etc/cron.daily/00logwatch verwendet.
- Dieses wird jeden Tag einmal gestartet und führt dann Logwatch mit den dort festgelegten Parametern aus.
- Das Skript kann auch nach /etc/cron.weekly, /etc/cron.monthly oder – weniger sinnvoll – nach /etc/cron.hourly verschoben werden.
- Möchte man Logwatch zu einem Zeitpunkt ausführen, der keinem der oben genannten entspricht, muss statt Anacron die normale, systemweite Crontab verwendet werden.
- Dazu muss das alte Logwatch-Skript gelöscht werden und ein neuer Eintrag in der Datei /etc/crontab hinzugefügt werden.
Dieser sollte nach folgendem Schema aufgebaut sein:
* * * * * /usr/sbin/logwatch <parameter> | | | | | | | | | +----- Wochentag (1 - 7) | | | +------- Monat (1 - 12) | | +--------- Tag (1 - 31) | +----------- Stunde (0 - 23) +------------- Minute (0 - 59)
Angenommen, Logwatch soll einen Bericht mit den folgenden Parametern generieren: werktags; 2:00 Uhr; nicht detailliert; reiner Text; gestern; per Mail; nobody@ubuntuusers.de
Der entsprechende Crontab-Eintrag würde dann wie folgt aussehen:
0 2 * * 1,2,3,4,5 /usr/sbin/logwatch --detail low --format text --range yesterday --mailto nobody@ubuntuusers.de > /dev/null 2>&1
Der Inhalt der durch diesen Eintrag versandten E-Mail sähe wie folgt aus:
################### Logwatch 7.3.6 (05/19/07) #################### Processing Initiated: Tue Apr 3 01:55:24 2012 Date Range Processed: yesterday ( 2012-Apr-02 ) Period is day. Detail Level of Output: 0 Type of Output/Format: stdout / text Logfiles for Host: itchy ##################################################################
--------------------- dpkg status changes Begin ------------------------
Installed: logwatch 7.3.6.cvs20090906-1ubuntu5 postfix 2.8.5-2~build1
---------------------- dpkg status changes End -------------------------
--------------------- httpd Begin ------------------------
Requests with error response codes 404 Not Found /robots.txt: 2 Time(s)
408 Request Timeout null: 1 Time(s)
---------------------- httpd End -------------------------
--------------------- Kernel Begin ------------------------
WARNING: Kernel Errors Present [ 18.959797] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro ...: 1 Time(s)
---------------------- Kernel End -------------------------
--------------------- pam_unix Begin ------------------------
su: Sessions Opened: root -> nxpgsql: 7 Time(s) root -> daemon: 1 Time(s) root -> postgres: 1 Time(s)
sudo: Authentication Failures: simon(0) -> simon: 1 Time(s)
---------------------- pam_unix End -------------------------
--------------------- Connections (secure-log) Begin ------------------------
New Users: postfix (119)
New Groups: postfix (131) postdrop (132)
Changed password expiry for users: postfix : 1 Time(s)
---------------------- Connections (secure-log) End -------------------------
--------------------- SSHD Begin ------------------------
Users logging in through sshd: simon: 192.168.100.185 (iPad-Simon.home.lan): 4 times
Received disconnect: 11: Normal Shutdown. Thank you! : 3 Time(s)
---------------------- SSHD End -------------------------
--------------------- Sudo (secure-log) Begin ------------------------
==============================================================================
root => simon ------------- /usr/bin/vlc - 1 Times.
==============================================================================
simon => root ------------- /bin/chown - 1 Times. /bin/cp - 2 Times. /bin/zcat - 1 Times. /usr/bin/apt-get - 1 Times. /usr/bin/find - 1 Times.
---------------------- Sudo (secure-log) End -------------------------
--------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on /dev/sdb1 221G 9.0G 200G 5% / /dev/sda2 75G 58G 18G 78% /home /dev/md0 917G 217G 654G 25% /home/simon/Archiv
---------------------- Disk Space End -------------------------
###################### Logwatch End #########################
Eigene Dienste
- Das Hinzufügen eigener Dienste zu Logwatch erfordert den Umgang mit der Skriptsprache Perl.
- Um so ein Modul entwickeln zu können, muss man zuerst die Verzeichnisstruktur von Logwatch verstehen.
- Diese mag auf den ersten Blick ein wenig verwirrend wirken, ergibt aber durchaus Sinn.
Logwatch ist auf mehrere Konfigurationsverzeichnisse aufgeteilt. Nachfolgend wird deren Funktion erläutert:
Verzeichnisse
Pfad Beschreibung /etc/logwatch/ Dieses Verzeichnis enthält die benutzerdefinierte Konfiguration. Dieses Verzeichnis enthält die gleiche Struktur wie /usr/share/logwatch. /usr/share/logwatch/ Hier befindet sich die Standardkonfiguration. Diese sollte nicht editiert werden. /usr/share/logwatch/default.conf/ Konfiguration der von Haus aus in Logwatch integrierten Dienste. /usr/share/logwatch/dist.conf/ Konfiguration der speziell für Ubuntu hinzugefügten Dienste. /usr/share/logwatch/scripts/ Perl-Skripte zum Verarbeiten der Logfiles.
- In den *.conf-Verzeichnissen befinden sich noch je zwei weitere Verzeichnisse namens logfiles und services.
- Im ersten wird das Logfile definiert, im letzteren die Dienste.
- Möchte man nun einen eigenen Dienst konfigurieren, erstellt man – falls nicht vorhanden – diese Verzeichnisstruktur unter /etc/logwatch/ und legt dort das Perl-Skript und die Konfigurationsdateien ab.
- Es empfiehlt sich, einen bereits existierenden Dienst als Vorlage zu nutzen.
Links
Interne Links
TODO
Weblinks
TODO