Ich verwende einen Vanilla-Ubuntu-16.04-Server und versuche, mich damit zu beschäftigen, wie die Protokollierung standardmäßig eingerichtet ist. Ich kann sehen , dass beide journald
und rsyslog
installiert sind und ausgeführt, aber es ist nicht klar , für mich , wie Log - Nachrichten verarbeitet werden.
Die meisten Nachrichten scheinen sowohl in /var/log/syslog
als auch über zu erscheinen journalctl
, aber ich kann keine explizite Konfiguration für die Weiterleitung zwischen den beiden in /etc/systemd/journald.conf
(die im Grunde alle standardmäßig auskommentiert ist) /etc/rsyslog.conf
oder sehen /etc/rsyslog.d/50-default.conf
. Ich habe versucht, eine offizielle Dokumentation oder sogar einen Blog-Beitrag zu finden, in dem erklärt wird, wie diese beiden in Ubuntu eingerichtet sind, habe aber nichts gefunden.
Um meine Verwirrung noch weiter zu verstärken, habe ich logger -p local1.info Test
auf dem Host ausgeführt und festgestellt, dass nichts geschrieben wurde /var/log/syslog
, während die Nachricht unter angezeigt wurde journalctl
.
Meine Fragen sind:
- Wie genau arbeiten journald und rsyslog unter Ubuntu 16.04 zusammen (standardmäßig)?
Wie kommt es, dass Nachrichten, dielogger
scheinbar von gesendet wurden , im Journal, aber nicht im Syslog landen?
Update: Es stellte sich heraus logger
, dass es ein Fehler war, dass ich nicht wie erwartet funktionierte. Daher ist es für die Hauptfrage nicht relevant.
logger -p .info hello
ist ungültig. Sie haben keinen Einrichtungsnamen angegeben.logger
war es meine Schuld, dass ich nicht funktionierte. Das ist jetzt behoben (trotzdem danke für die Tipps). Bei Protokollen, die an zwei Stellenimuxsock
angezeigt werden, scheint Ihre Notiz zu der Schlüsselrolle zu gehören: Offenbar warten sowohl rsyslog als auch journald auf lokale Syslog-Nachrichten, weshalb diese Einträge in zwei separate Protokolle geschrieben werden.Systemd ist ein Init-System, mit dem die Dienste beim Systemstart gestartet werden. Journald ist dafür verantwortlich, Protokolle für Dienste zu erstellen, die von systemd gestartet werden. Durch die Integration von Journald in systemd stehen Journald auch die frühesten Startprozessnachrichten zur Verfügung.
Rsyslog ist ein speziell für die Protokollverarbeitung entwickelter Daemon, der nichts mit Journald zu tun hat. Es kann Protokolle auf viele Arten annehmen und auf viele Arten ausgeben. Es ist nicht standardmäßig aktiviert, dass es auch Protokollnachrichten von Journald entgegennimmt. Dazu müssen Sie in die Datei /etc/rsyslog.conf schreiben,
Jetzt werden auch Protokolle aus dem Journal akzeptiert. Aber ich schlage vor, Sie sollten Ihre /etc/rsyslog.conf-Datei nicht ändern.
Am Ende der Datei /etc/rsyslog.conf steht die folgende Zeile:
Dies bedeutet, dass alle Dateien mit der Endung .conf im Ordner /etc/rsyslog.d/ beim Laden von rsyslog eingeschlossen werden sollten. Alle Ihre benutzerdefinierten Konfigurationen sollten daher in diesen Dateien gespeichert werden
Ich würde Ihnen vorschlagen, eine Datei /etc/rsyslog.d/journald.conf zu erstellen und das folgende Snippet darin einzufügen.
Unten ist das Snippet von der offiziellen Seite von rsyslog imjournal
Zeile 1 - Lädt das Imjournal-Modul zum Akzeptieren der Protokolle von Journald
2 - Das Modul mmjsonparse wird geladen, um die Protokolle zu analysieren
3 - Sie sind in dem in der Vorlage beschriebenen Format strukturiert
4 - Diese Protokolle werden mit dem Modul mmjsonparse analysiert.
5 - Diese Protokolle werden gemäß der in der angegebenen Vorlage angegebenen Struktur unter Verwendung des Moduls omfile (Ausgabemodul Datei - Ausgabe in Datei) an eine Datei gesendet, nämlich / var / log / ceelog.
Nehmen Sie die gewünschten Änderungen in der Konfiguration vor.
quelle