Journald: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''journald''' ist die Service Unit von [https://wiki.ubuntuusers.de/systemd/ systemd], die für das [https://de.wikipedia.org/wiki/Logging Logging] in das zentrale Journal zuständig ist.
{{DISPLAYTITLE:journald}}
 
'''journald''' ist die Service Unit von [[systemd]], die für das [[Logging]] in das zentrale Journal zuständig ist


== Beschreibung ==
== Beschreibung ==
* Standardmäßig werden dort die Logmeldungen des Kernels, des Systems, der [https://wiki.ubuntuusers.de/systemd/Service_Units/ Service Units] als auch von [https://wiki.ubuntuusers.de/Shell/Umleitungen/#stdin-stdout-stderr-Kanaele-der-Bash stdout] und [https://wiki.ubuntuusers.de/Shell/Umleitungen/#stdin-stdout-stderr-Kanaele-der-Bash stderr] gesammelt.
Standardmäßig werden dort die Logmeldungen des Kernels, des Systems, der [https://wiki.ubuntuusers.de/systemd/Service_Units/ Service Units] als auch von [https://wiki.ubuntuusers.de/Shell/Umleitungen/#stdin-stdout-stderr-Kanaele-der-Bash stdout] und [https://wiki.ubuntuusers.de/Shell/Umleitungen/#stdin-stdout-stderr-Kanaele-der-Bash stderr] gesammelt
 
Die Logmeldungen werden standardmäßig in der Datei '''system.journal''' gespeichert
* ''/run/log/journal/UUID_DES_VERZEICHNISSES''
* Die <tt>UUID_DES_VERZEICHNISSES</tt> variiert dabei von System zu System


Die Logmeldungen werden standardmäßig in der Datei '''system.journal''' gespeichert, die bei Ubuntu im Verzeichnis '''/run/log/journal/UUID_DES_VERZEICHNISSES''' gespeichert wird.
Aktiviert man die [https://wiki.ubuntuusers.de/systemd/journald/#Speichereinstellung-fuer-das-Journal-aendern persistente Speicherung] der Logdateien, dann ändert sich der Speicherort zu '''/var/log/journal/UUID_DES_VERZEICHNISSES'''
* Die <tt>UUID_DES_VERZEICHNISSES</tt> variiert dabei von System zu System.
* Je nach Einstellung wird zusätzlich für jeden angemeldeten Benutzer eine Journald-Datei angelegt, siehe den entsprechenden Abschnitt dazu [https://wiki.ubuntuusers.de/systemd/journald/#zusaetzliche-Journal-Dateien-pro-Benutzer weiter unten]
* Aktiviert man die [https://wiki.ubuntuusers.de/systemd/journald/#Speichereinstellung-fuer-das-Journal-aendern persistente Speicherung] der Logdateien, dann ändert sich der Speicherort zu '''/var/log/journal/UUID_DES_VERZEICHNISSES'''.
* Je nach Einstellung wird zusätzlich für jeden angemeldeten Benutzer eine Journald-Datei angelegt, siehe den entsprechenden Abschnitt dazu [https://wiki.ubuntuusers.de/systemd/journald/#zusaetzliche-Journal-Dateien-pro-Benutzer weiter unten].


journald kümmert sich selber um die [https://en.wikipedia.org/wiki/Log%20rotation Log rotation].
journald kümmert sich selber um die [https://en.wikipedia.org/wiki/Log%20rotation Log rotation]
* Standardmäßig erfolgt dies in Abhängigkeit von der Größe der Logdatei, wobei man in der Konfiguration auch eine zeit-basierte Logrotation umstellen kann.
* Standardmäßig erfolgt dies in Abhängigkeit von der Größe der Logdatei, wobei man in der Konfiguration auch eine zeit-basierte Logrotation umstellen kann


Des Weiteren verwenden die Journaldateien ein binäres Format zum Speichern der Daten.
Des Weiteren verwenden die Journaldateien ein binäres Format zum Speichern der Daten
* Zum Auslesen der Daten gibt es [https://wiki.ubuntuusers.de/systemd/journald/#Journal-Datei-auslesen verschiedene Möglichkeiten].
* Zum Auslesen der Daten gibt es [https://wiki.ubuntuusers.de/systemd/journald/#Journal-Datei-auslesen verschiedene Möglichkeiten]


Zusätzlich schützt journald die Journaleinträge gegen Manipulation durch eine Technik namens "Forward Secure Sealing".
Zusätzlich schützt journald die Journaleinträge gegen Manipulation durch eine Technik namens "Forward Secure Sealing"
* Dadurch wird es z.B. unerwünschten Eindringlingen ins eigene System erschwert, ihre Spuren durch Manipulation der Logeinträge zu verschleiern.
* Dadurch wird es z.&nbsp;B.&nbsp;unerwünschten Eindringlingen ins eigene System erschwert, ihre Spuren durch Manipulation der Logeinträge zu verschleiern


== Installation ==
== Installation ==
Auf aktueller Debian-Systemen während der Systeminstallation als Standard installiert.
* Auf aktueller Debian-Systemen während der Systeminstallation als Standard installiert
* TODO: List der Pakete


== Konfiguration ==
== Konfiguration ==
Möchte man die Einstellung von journald ändern, muss die Datei '''/etc/systemd/journald.conf''' mit einem Editor und Root-Rechten bearbeitet werden.
Möchte man die Einstellung von journald ändern, muss die Datei '''/etc/systemd/journald.conf''' mit einem Editor und Root-Rechten bearbeitet werden


In der Datei sind alle Default-Konfigurationswerte von journald in Form von auskommentierten Einträgen hinterlegt.
In der Datei sind alle Default-Konfigurationswerte von journald in Form von auskommentierten Einträgen hinterlegt
* Zum Ändern eines Konfigurationspunkts ändert man einfach den entsprechenden Wert und entfernt das Kommentarzeichen <tt><nowiki>#</nowiki></tt> am Zeilenanfang.
* Zum Ändern eines Konfigurationspunkts ändert man einfach den entsprechenden Wert und entfernt das Kommentarzeichen <tt><nowiki>#</nowiki></tt> am Zeilenanfang
* Nach einem Neustart des Rechners läuft journald mit der geänderten Konfiguration.
* Nach einem Neustart des Rechners läuft journald mit der geänderten Konfiguration


Eine komplette Übersicht inklusive Erklärung zu den Konfigurationsmöglichkeiten findet man in der [http://www.freedesktop.org/software/systemd/man/journald.conf.html Dokumentation] oder in der [https://wiki.ubuntuusers.de/man/ Manpage] namens '''journald.conf'''.
Eine komplette Übersicht inklusive Erklärung zu den Konfigurationsmöglichkeiten findet man in der [http://www.freedesktop.org/software/systemd/man/journald.conf.html Dokumentation] oder in der [https://wiki.ubuntuusers.de/man/ Manpage] namens '''journald.conf'''


=== Speichereinstellung für das Journal ändern ===
=== Speichereinstellung für das Journal ändern ===
Wie (und ob) das Journal gespeichert wird, wird über den Wert des Schlüssels <tt>Storage</tt> geregelt.
Wie (und ob) das Journal gespeichert wird, wird über den Wert des Schlüssels <tt>Storage</tt> geregelt
* Unter Ubuntu ist der Standardwert <tt>auto</tt>.
* Unter Ubuntu ist der Standardwert <tt>auto</tt>
* Dabei wird die Journal-Datei im Verzeichnis'''/run/log/UUID_DES_VERZEICHNISSES/''' angelegt und geht nach dem Herunterfahren des Systems verloren.
* Dabei wird die Journal-Datei im Verzeichnis'''/run/log/UUID_DES_VERZEICHNISSES/''' angelegt und geht nach dem Herunterfahren des Systems verloren


Damit die Journaldateien - und damit alle Logs - für längere Zeit gespeichert werden, gibt es zwei Möglichkeiten:# Man legt das Verzeichnis '''/var/log/journal/''' an.
Damit die Journaldateien - und damit alle Logs - für längere Zeit gespeichert werden, gibt es zwei Möglichkeiten:# Man legt das Verzeichnis '''/var/log/journal/''' an
* Nach dem Neustart des Systems wird die Journal dort gespeichert und bleibt somit auch nach einem Neustart des Systems bestehen.
* Nach dem Neustart des Systems wird die Journal dort gespeichert und bleibt somit auch nach einem Neustart des Systems bestehen
# Man ändert in der Konfigurationsdatei '''/etc/systemd/journald.conf''' den Wert der Zeile <br/>Storage=auto <br/>auf <br/>Storage=persistent <br/>Nach einem Neustart des Systems wird der Ordner '''/var/log/journal/''' automatisch angelegt und das Journal wird dort dauerhaft gespeichert.
# Man ändert in der Konfigurationsdatei '''/etc/systemd/journald.conf''' den Wert der Zeile <br/>Storage=auto <br/>auf <br/>Storage=persistent <br/>Nach einem Neustart des Systems wird der Ordner '''/var/log/journal/''' automatisch angelegt und das Journal wird dort dauerhaft gespeichert


Hat man die erste Möglichkeit gewählt, so kehrt man zum nicht-dauerhaften Journal zurück, in dem man das händisch angelegte Verzeichnis löscht und dann den Rechner neu starten.
Hat man die erste Möglichkeit gewählt, so kehrt man zum nicht-dauerhaften Journal zurück, in dem man das händisch angelegte Verzeichnis löscht und dann den Rechner neu starten


Möchte man keine Journaldatei anlegen und somit das Logging komplett deaktivieren (nicht empfohlen!), muss man für den Schlüssel <tt>Storage</tt> den Wert <tt>none</tt> eintragen.
Möchte man keine Journaldatei anlegen und somit das Logging komplett deaktivieren (nicht empfohlen!), muss man für den Schlüssel <tt>Storage</tt> den Wert <tt>none</tt> eintragen


=== Zusätzliche Journal-Dateien pro Benutzer ===
=== Zusätzliche Journal-Dateien pro Benutzer ===
Ist das [https://wiki.ubuntuusers.de/systemd/journald/#Speichereinstellung-fuer-das-Journal-aendern persistente Speichern] des Journals aktiviert, wird zusätzlich zur Journal-Datei '''system.journal''' eine '''.journal'''-Datei für jeden Benutzer angelegt.
Ist das [https://wiki.ubuntuusers.de/systemd/journald/#Speichereinstellung-fuer-das-Journal-aendern persistente Speichern] des Journals aktiviert, wird zusätzlich zur Journal-Datei '''system.journal''' eine '''.journal'''-Datei für jeden Benutzer angelegt
* Diese folgen dem Namensschema '''user-XXXX.journal''', wobei <tt>XXXX</tt> die Nutzer-ID (UID) auf dem System ist.
* Diese folgen dem Namensschema '''user-XXXX.journal''', wobei <tt>XXXX</tt> die Nutzer-ID (UID) auf dem System ist
* Der 1. angelegte Benutzer hat bei Ubuntu die Nummer <tt>1000</tt>, der zweite <tt>1001</tt> usw.
* Der 1. angelegte Benutzer hat bei Ubuntu die Nummer <tt>1000</tt>, der zweite <tt>1001</tt> usw
* In diesen Journal-Dateien werden dann nur die Logs gesammelt, die nur durch den Benutzer (und nicht das System) generiert werden.
* In diesen Journal-Dateien werden dann nur die Logs gesammelt, die nur durch den Benutzer (und nicht das System) generiert werden


=== Weiterleitung der Logs an syslog ===
=== Weiterleitung der Logs an syslog ===
In der Standardkonfiguration von journald unter Ubuntu werden die Logs, welches ins zentrale Journal geschrieben werden, zusätzlich an [http://www.rsyslog.com/ rsyslog] weiter geleitet, welches die traditionelle Logdatei '''/var/log/syslog''' anlegt.
In der Standardkonfiguration von journald unter Ubuntu werden die Logs, welches ins zentrale Journal geschrieben werden, zusätzlich an [http://www.rsyslog.com/ rsyslog] weiter geleitet, welches die traditionelle Logdatei '''/var/log/syslog''' anlegt
* Die Weiterleitung erfolgt über den Socket '''/run/systemd/journal/syslog'''.
* Die Weiterleitung erfolgt über den Socket '''/run/systemd/journal/syslog'''


Um das Weiterleiten zu deaktivieren, muss man in der Konfigurationsdatei von journald den Schlüssel <tt>ForwardToSyslog</tt> auf <tt>no</tt> setzen.
Um das Weiterleiten zu deaktivieren, muss man in der Konfigurationsdatei von journald den Schlüssel <tt>ForwardToSyslog</tt> auf <tt>no</tt> setzen


Zu beachten ist, dass die Weiterleitung an syslog unabhängig von dem gesetzten Werte für <tt>Storage</tt> ist.
Zu beachten ist, dass die Weiterleitung an syslog unabhängig von dem gesetzten Werte für <tt>Storage</tt> ist
* D.h. bei <tt>Storage=none</tt> und <tt>ForwardToSyslog=yes</tt> werden trotzdem alle Meldungen im syslog gespeichert.
* D.h. bei <tt>Storage=none</tt> und <tt>ForwardToSyslog=yes</tt> werden trotzdem alle Meldungen im syslog gespeichert


== Journal-Datei auslesen ==
== Journal-Datei auslesen ==
=== journalctl ===
=== journalctl ===
journalctl ist das Standardwerkzeug zum Auslesen und Anzeige der Journaldatei.
journalctl ist das Standardwerkzeug zum Auslesen und Anzeige der Journaldatei
* Mehr Informationen sind im separaten Artikel [https://wiki.ubuntuusers.de/systemd/journalctl/ journalctl] zu finden.
* Mehr Informationen sind im separaten Artikel [https://wiki.ubuntuusers.de/systemd/journalctl/ journalctl] zu finden


=== strings und grep ===
=== strings und grep ===
Auch wenn die Logdateien in einem Binärformat gespeichert werden, sind darin gespeicherten Meldungen unverändert als Zeichenketten abgelegt und lassen sich mit dem Werkzeug <tt>strings</tt> (enthalten im Paket '''binutils''') und [https://wiki.ubuntuusers.de/grep/ grep] auch ohne journalctl herausfiltern:
Auch wenn die Logdateien in einem Binärformat gespeichert werden, sind darin gespeicherten Meldungen unverändert als Zeichenketten abgelegt und lassen sich mit dem Werkzeug <tt>strings</tt> (enthalten im Paket '''binutils''') und [https://wiki.ubuntuusers.de/grep/ grep] auch ohne journalctl herausfiltern:


strings /pfad/zum/system.journal | grep -i SUCHBEGRIFF  
strings /pfad/zum/system.journal | grep -i SUCHBEGRIFF


(der Pfad ist meist ein Unterordner von /run/log/journal/)
(der Pfad ist meist ein Unterordner von /run/log/journal/)
== Links ==
# https://wiki.ubuntuusers.de/systemd/
# https://de.wikipedia.org/wiki/Logging
[[Kategorie:Systemd]]
[[Kategorie:Linux/Logging]]
{{DEFAULTSORT:journald}}

Aktuelle Version vom 29. Mai 2024, 17:46 Uhr


journald ist die Service Unit von systemd, die für das Logging in das zentrale Journal zuständig ist

Beschreibung

Standardmäßig werden dort die Logmeldungen des Kernels, des Systems, der Service Units als auch von stdout und stderr gesammelt

Die Logmeldungen werden standardmäßig in der Datei system.journal gespeichert

  • /run/log/journal/UUID_DES_VERZEICHNISSES
  • Die UUID_DES_VERZEICHNISSES variiert dabei von System zu System

Aktiviert man die persistente Speicherung der Logdateien, dann ändert sich der Speicherort zu /var/log/journal/UUID_DES_VERZEICHNISSES

  • Je nach Einstellung wird zusätzlich für jeden angemeldeten Benutzer eine Journald-Datei angelegt, siehe den entsprechenden Abschnitt dazu weiter unten

journald kümmert sich selber um die Log rotation

  • Standardmäßig erfolgt dies in Abhängigkeit von der Größe der Logdatei, wobei man in der Konfiguration auch eine zeit-basierte Logrotation umstellen kann

Des Weiteren verwenden die Journaldateien ein binäres Format zum Speichern der Daten

Zusätzlich schützt journald die Journaleinträge gegen Manipulation durch eine Technik namens "Forward Secure Sealing"

  • Dadurch wird es z. B. unerwünschten Eindringlingen ins eigene System erschwert, ihre Spuren durch Manipulation der Logeinträge zu verschleiern

Installation

  • Auf aktueller Debian-Systemen während der Systeminstallation als Standard installiert
  • TODO: List der Pakete

Konfiguration

Möchte man die Einstellung von journald ändern, muss die Datei /etc/systemd/journald.conf mit einem Editor und Root-Rechten bearbeitet werden

In der Datei sind alle Default-Konfigurationswerte von journald in Form von auskommentierten Einträgen hinterlegt

  • Zum Ändern eines Konfigurationspunkts ändert man einfach den entsprechenden Wert und entfernt das Kommentarzeichen # am Zeilenanfang
  • Nach einem Neustart des Rechners läuft journald mit der geänderten Konfiguration

Eine komplette Übersicht inklusive Erklärung zu den Konfigurationsmöglichkeiten findet man in der Dokumentation oder in der Manpage namens journald.conf

Speichereinstellung für das Journal ändern

Wie (und ob) das Journal gespeichert wird, wird über den Wert des Schlüssels Storage geregelt

  • Unter Ubuntu ist der Standardwert auto
  • Dabei wird die Journal-Datei im Verzeichnis/run/log/UUID_DES_VERZEICHNISSES/ angelegt und geht nach dem Herunterfahren des Systems verloren

Damit die Journaldateien - und damit alle Logs - für längere Zeit gespeichert werden, gibt es zwei Möglichkeiten:# Man legt das Verzeichnis /var/log/journal/ an

  • Nach dem Neustart des Systems wird die Journal dort gespeichert und bleibt somit auch nach einem Neustart des Systems bestehen
  1. Man ändert in der Konfigurationsdatei /etc/systemd/journald.conf den Wert der Zeile
    Storage=auto
    auf
    Storage=persistent
    Nach einem Neustart des Systems wird der Ordner /var/log/journal/ automatisch angelegt und das Journal wird dort dauerhaft gespeichert

Hat man die erste Möglichkeit gewählt, so kehrt man zum nicht-dauerhaften Journal zurück, in dem man das händisch angelegte Verzeichnis löscht und dann den Rechner neu starten

Möchte man keine Journaldatei anlegen und somit das Logging komplett deaktivieren (nicht empfohlen!), muss man für den Schlüssel Storage den Wert none eintragen

Zusätzliche Journal-Dateien pro Benutzer

Ist das persistente Speichern des Journals aktiviert, wird zusätzlich zur Journal-Datei system.journal eine .journal-Datei für jeden Benutzer angelegt

  • Diese folgen dem Namensschema user-XXXX.journal, wobei XXXX die Nutzer-ID (UID) auf dem System ist
  • Der 1. angelegte Benutzer hat bei Ubuntu die Nummer 1000, der zweite 1001 usw
  • In diesen Journal-Dateien werden dann nur die Logs gesammelt, die nur durch den Benutzer (und nicht das System) generiert werden

Weiterleitung der Logs an syslog

In der Standardkonfiguration von journald unter Ubuntu werden die Logs, welches ins zentrale Journal geschrieben werden, zusätzlich an rsyslog weiter geleitet, welches die traditionelle Logdatei /var/log/syslog anlegt

  • Die Weiterleitung erfolgt über den Socket /run/systemd/journal/syslog

Um das Weiterleiten zu deaktivieren, muss man in der Konfigurationsdatei von journald den Schlüssel ForwardToSyslog auf no setzen

Zu beachten ist, dass die Weiterleitung an syslog unabhängig von dem gesetzten Werte für Storage ist

  • D.h. bei Storage=none und ForwardToSyslog=yes werden trotzdem alle Meldungen im syslog gespeichert

Journal-Datei auslesen

journalctl

journalctl ist das Standardwerkzeug zum Auslesen und Anzeige der Journaldatei

  • Mehr Informationen sind im separaten Artikel journalctl zu finden

strings und grep

Auch wenn die Logdateien in einem Binärformat gespeichert werden, sind darin gespeicherten Meldungen unverändert als Zeichenketten abgelegt und lassen sich mit dem Werkzeug strings (enthalten im Paket binutils) und grep auch ohne journalctl herausfiltern:

strings /pfad/zum/system.journal | grep -i SUCHBEGRIFF

(der Pfad ist meist ein Unterordner von /run/log/journal/)

Links

  1. https://wiki.ubuntuusers.de/systemd/
  2. https://de.wikipedia.org/wiki/Logging