9.5.1. Prinzip und Mechanismus
Starting with Debian Bookworm, the rsyslog package is no longer installed by default, which in the past provided the default logging functionality. Instead, the log is provided by systemd
's journal, which can be accessed by the journalctl(5) command.
There are situations, where it is necessary or desired to install rsyslog, though, e.g. to send all log messages to a central server. After installation, the rsyslogd
daemon is responsible for collecting service messages coming from applications and the kernel, then dispatching them into log files (usually stored in the /var/log/
directory). It obeys the /etc/rsyslog.conf
configuration file.
Jede Protokollmeldung ist einem Anwendungsuntersystem zugeordnet (in der Dokumentation „facility“ genannt):
auth
und authpriv
: für die Authentifizierung;
cron
: kommt von den Diensten für die Aufgabenterminierung cron
und atd
;
daemon
: betrifft einen nicht näher bestimmten Daemon (DNS, NTP usw.);
ftp
: bezieht sich auf den FTP-Server;
kern
: eine vom Kernel kommende Meldung;
lpr
: kommt vom Druck-Subsystem;
mail
: kommt vom E-Mail-Subsystem;
news
: Usenet-Subsystemmeldung (insbesondere von einem NNTP-Server [Network News Transfer Protocol], der Nachrichtenforen verwaltet);
syslog
: Meldungen vom syslogd
-Server selbst;
user
: Benutzermeldungen (allgemein);
uucp
: Meldungen vom UUCP-Server (Unix to Unix Copy Program, ein altes vor allem zur Verteilung von E-Mails verwendetes Protokoll);
local0
bis local7
: für die lokale Verwendung reserviert.
Jeder Meldung ist auch eine Prioritätsstufe zugeordnet. Hier sind sie in abnehmender Reihenfolge:
emerg
: „Hilfe!“ Es gibt einen Notfall, das System ist möglicherweise unbrauchbar.
alert
: Beeilung! Jede Verzögerung kann gefährlich sein, es muss sofort etwas unternommen werden;
crit
: die Umstände sind kritisch;
err
: Fehler;
warn
: Warnung (möglicher Fehler);
notice
: die Umstände sind normal, aber die Meldung ist wichtig;
info
: aufschlussreiche Meldung;
debug
: Fehlerbeseitigungsmeldung.
9.5.2. Die Konfigurationsdatei
The syntax of the /etc/rsyslog.conf
file is detailed in the rsyslog.conf(5) manual page, but there is also HTML documentation available in the rsyslog-doc package (/usr/share/doc/rsyslog-doc/html/index.html
). The overall principle is to write “selector” and “action” pairs. The selector defines all relevant messages, and the action describes how to deal with them.
9.5.2.1. Syntax des Selektors
Der Selektor ist eine durch Semikolon getrennte Liste von subsystem.priorität
-Paaren (Beispiel: auth.notice;mail.info
). Ein Stern kann für alle Subsysteme oder alle Prioritäten stehen (Beispiele: *.alert
oder mail.*
). Mehrere Subsysteme können in einer Gruppe zusammengefasst werden, indem sie durch ein Komma getrennt werden (Beispiel: auth,mail.info
). Die angezeigte Priorität bezieht sich auch auf Meldungen gleicher oder höherer Priorität; so bezeichnet auth.alert
Meldungen des auth
-Subsystems mit der Priorität alert
oder emerg
. Mit einem vorangestellten Ausrufezeichen (!) bezeichnen sie das Gegenteil, mit anderen Worten nur die niedrigeren Prioritäten; so bezeichnet auth.!notice
Meldungen, die von auth
mit den Prioritäten info
oder debug
verschickt worden sind. Mit einem vorangestellten Gleichheitszeichen (=) beziehen sie sich genau und ausschließlich auf die angegebene Priorität (bei auth.=notice
handelt es sich ausschließlich um Meldungen von auth
mit der Priorität notice
).
Jedes Element in der Auswahlliste setzt vorhergehende Elemente außer Kraft. Es ist somit möglich, die Menge einzugrenzen oder bestimmte Elemente von ihr auszuschließen. Zum Beispiel bezeichnet kern.info;kern.!err
Meldungen vom Kernel mit einer Priorität zwischen info
und warn
. Die Priorität none
bezeichnet die leere Menge (keine Prioritäten) und kann dazu dienen, ein Subsystem von einer Menge von Meldungen auszuschließen. So bezeichnet *.crit;kern.none
alle Meldungen mit der Priorität crit
oder höher, die nicht vom Kernel kommen.
9.5.2.2. Syntax der Aktionen
Die verschiedenen möglichen Aktionen sind:
die Meldung zu einer Datei hinzufügen (Beispiel: /var/log/messages
);
die Meldung an einen entfernten syslog
-Server schicken (Beispiel: @log.falcot.com
);
die Meldung an eine bestehende benannte Pipe schicken (Beispiel: |/dev/xconsole
);
die Meldung an einen oder mehrere Benutzer schicken, falls sie angemeldet sind (Beispiel: root,rhertzog
);
die Meldung an alle angemeldeten Benutzer schicken (Beispiel: *
);
die Nachricht in eine Textkonsole schreiben (Beispiel: /dev/tty8
).