GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Journalctl:So lesen und bearbeiten Sie Systemd-Protokolle

Einführung

Systemd protokolliert alle Linux-Meldungen des Kernels und der Systemprozesse. Der Befehl journalctl ermöglicht das Anzeigen und Bearbeiten der systemd-Protokolle, was ihn zu einem leistungsstarken Werkzeug für das Debuggen von Diensten und Prozessen macht.

Diese Anleitung zeigt anhand von Beispielen, wie Sie systemd-Protokolle mit journalctl lesen, kontrollieren und verwalten.

Voraussetzungen

  • Zugriff auf die Befehlszeile/das Terminalfenster.
  • Ein Texteditor (z. B. nano) zum Bearbeiten der Konfigurationsdatei.
  • Ein Benutzer mit sudo-Berechtigungen (siehe So fügen Sie einen Benutzer zu sudoern hinzu).

Was ist Systemd?

Systemd ist ein Linux-Dienst und Systemmanager. Während Benutzer systemd nicht direkt aufrufen, enthält der Manager viele Tools und Daemons, die einzeln für verschiedene Systemprozesse ausgeführt werden können.

Eine der leistungsstärksten systemd-Funktionalitäten sind die Protokollierungsfunktionen. Systemd bietet eine zentralisierte Lösung zum Protokollieren aller Kernel- und Benutzerprozesse durch Protokolle, die als Journale bekannt sind .

Das journald Daemon sammelt alle Nachrichten, die das System ausgibt, und erstellt dann Journale, unabhängig vom Programm oder Prozess. Der Daemon sammelt Daten von allen verfügbaren Systemressourcen und speichert sie in einem binären Format.

Hinweis: Das Binärformat ermöglicht die Anpassung der Ausgabe an Ihre Anforderungen und bietet mehr Flexibilität als herkömmliche Linux-Protokolldateien.

journalctl-Syntax

Der journalctl Der Befehl fragt die vom journald gesammelten Journaldaten ab und manipuliert sie Dämon. Das Tool ist für Systemadministratoren von entscheidender Bedeutung und ergänzt andere Linux-Protokollierungstools und Syslog-Server-Softwarelösungen.

Die Befehlssyntax lautet:

journalctl <options> <matches>

Ohne Parameter ist die journalctl Befehl gibt den gesamten Journalinhalt beginnend mit dem ältesten Eintrag aus. Die <match> ist ein oder mehrere durch Leerzeichen getrennte Argumente zum Filtern der Ausgabefelder. Das Format ist "FIELD=VALUE" .

journalctl-Optionen

Die folgende Tabelle fasst die gängigen journalctl zusammen Optionen:

Option Beschreibung
-a
--all
Alle Felder vollständig anzeigen, einschließlich nicht druckbarer Zeichen.
-f
--follow
Zeigt die neuesten Einträge und druckt laufend neue.
--no-full Kürzt die Ausgabe.
-e
--pager-end
Springt zum Pager-Ende.
-n <number>
--lines=<number>
Zeigt die neuesten Einträge, begrenzt auf <number> von Veranstaltungen. Ohne Argument ist der Standardwert zehn (10).
-o <format>
--output=<format>
Zeigt die Journaleinträge im angeforderten <format> an .
--utc Zeigt die Zeit im Format der koordinierten Weltzeit (UTC) an.
-x
--catalog
Fügt Erklärungstext zur Protokollnachricht hinzu, sofern verfügbar.
-q
--quiet
Unterdrückt informative Meldungen in der Ausgabe.
-b [<ID> or <+-offset>]
--boot[=<ID> or <+-offset>]
Zeigt Protokolle von einem bestimmten Start. Wenn Sie das Argument weglassen, werden die aktuellen Boot-Protokolle angezeigt.
-k
--dmesg
Zeigt nur Kernel-Meldungen.
--list-boots Zeigt eine Tabelle mit Startnummern und deren IDs an.
-g <regex>
--grep=<regex>
Filtert die Ausgabe gemäß der grep-Regex-Syntax.
-S <date> , -U <date>
--since=<date> , --until=<date>
Zeigt Einträge, die neuer oder älter als das angegebene Datum sind.
-u <unit|pattern>
--unit=<unit|pattern>
Protokolle für die angegebene systemd-Einheit oder jede Einheit anzeigen, die mit <pattern> übereinstimmt .
--disk-usage Berechnet und zeigt die gesamte Journalgröße auf der Festplatte an.
--vaccuum-size=<size> Beschränkt die Größe der archivierten Journaldatei auf .
--vaccuum-time=<time> Beschränkt die archivierten Journale auf neuer als
--no-pager Deaktiviert den Pager und zeigt ihn als Standardausgabe an.

Prüfen Sie journalctl Handbuchseite mit dem Befehl man für eine vollständige Liste der Optionen.

Wie man systemd liest

Der folgende Abschnitt beschreibt, wie Sie systemd-Protokolle lesen und die verschiedenen Anzeigeoptionen für journalctl verwenden Befehl. Die Ausgabe ist für jede Maschine anders, da Datensätze für jedes System einzigartig sind.

Alle Journaleinträge anzeigen

Um alle Journaleinträge anzuzeigen, verwenden Sie den journalctl Befehl ohne Optionen:

journalctl

Die erste Zeile der Ausgabe zeigt den Zeitbereich der Protokolldaten. Die Spalten enthalten die folgenden Daten in der Reihenfolge von links nach rechts:

  • Datum und Uhrzeit.
  • Host.
  • Protokollquelle.
  • Protokollnachricht.

Die Journaldaten enthalten viele Einträge. Verwenden Sie die Pfeiltasten (ähnlich dem less-Befehl) zum Navigieren.

Verlassen Sie das Journal, indem Sie q drücken .

Neueste Einträge anzeigen

Der journalctl zeigt standardmäßig die ältesten Einträge an. Um zum Pager-Ende zu springen und die neuesten Einträge anzuzeigen, verwenden Sie den -e Möglichkeit:

journalctl -e

Die Ausgabe zeigt die letzten 1000 Einträge, um Platz zu sparen.

Um zu steuern, wie viele Zeilen in der Ausgabe angezeigt werden, verwenden Sie -n Option gefolgt von der Anzahl der Zeilen. Um beispielsweise die fünf neuesten Journaleinträge anzuzeigen, verwenden Sie:

journalctl -n 5

Der -e Option ist unnötig und wird durch -n impliziert Möglichkeit. Wenn Sie die Nummer weglassen, werden standardmäßig die zehn neuesten Einträge angezeigt.

Beschränken Sie die Protokolle auf den spezifischen Startvorgang

Um die Protokolle auf den aktuellen Start zu beschränken, verwenden Sie -b Tag ohne Parameter:

journalctl -b

Ohne Parameter zeigt der Befehl aktuelle Boot-Protokolle.

Springen Sie zu einem bestimmten Start, indem Sie einen Offset-Parameter hinzufügen. Zeigen Sie beispielsweise die vorherigen Boot-Protokolle mit:

journalctl -b -1

Zeigen Sie alternativ das älteste verfügbare Boot-Protokoll an mit:

journalctl -b +1

Eine alternative Möglichkeit, einen bestimmten Startvorgang anzuzeigen, ist die Verwendung einer Start-ID. Rufen Sie die Boot-IDs mit --list-boots ab mit:

journalctl --list-boots

Die erste Spalte zeigt die negative Offset-Nummer, während die zweite Spalte die Boot-ID abruft . Kopieren Sie die ID und fügen Sie sie als Parameter zum Befehl hinzu, zum Beispiel:

journalctl -b cc07702b00884ec59312ece62604cac8

Die Ausgabe beschränkt die Protokollanzeige auf die bereitgestellte ID-Instanz.

Protokolle innerhalb eines bestimmten Zeitfensters anzeigen

Filtern Sie das Journal, indem Sie ein Zeitlimit angeben. Die zwei Optionen für die Begrenzung seit oder bis zu einem bestimmten Zeitpunkt sind:

journalctl -S <datetime>
journalctl -U <datetime>

Verwenden Sie die Optionen einzeln oder kombinieren Sie sie, um ein Zeitfenster zu erstellen.

Der Befehl erwartet eines der folgenden Datums- und Zeitformate:

  • Bestimmtes Datum und Uhrzeit, zum Beispiel 2022-04-30 09:20:00 . Wenn Sie den Zeitparameter weglassen, wird standardmäßig 00:00:00 verwendet .
  • Strings wie "yesterday" , "today" , "2 hours ago" , oder "now" .

Unten ist ein Beispiel journalctl Befehl mit einem bestimmten Zeitfenster:

journalctl -S 2022-04-02 -U 2022-04-22

Der Befehl erstellt ein Zeitfenster vom 2. April 2022 bis zum 22. April 2022. Die Ausgabe zeigt Zeitschriften, die in diesen Zeitrahmen fallen.

Verwenden Sie alternativ ein Zeichenfolgenmuster wie:

journalctl -S "50 minutes ago"

Die Ausgabe zeigt Protokolle von der angegebenen Zeit bis zur aktuellen Zeit.

Protokolle nach bestimmter systemd-Einheit anzeigen

Filtern Sie die Protokolle mithilfe von -u nach der spezifischen systemd-Einheit -Tag und Angabe des Gerätenamens. Um beispielsweise nur die Datensätze der Jenkins-Serviceeinheit zu filtern, führen Sie Folgendes aus:

journalctl -u jenkins

Die Ausgabe zeigt die Journaleinträge, die sich auf die spezifische systemd-Einheit beziehen (in diesem Fall Jenkins).

Hinweis: Um alle derzeit aktiven systemd-Einheiten anzuzeigen, verwenden Sie:

systemctl list-units

Kernel-Meldungen anzeigen

Um nur die Protokollmeldungen des Kernel-Journals anzuzeigen, verwenden Sie -k Möglichkeit:

journalctl -k

Die Ausgabe zeigt nur die Kernel-Meldungen des aktuellen Bootvorgangs, wobei -b angewendet wird Schild. Um Kernelprotokolle von einer anderen Startsitzung zu finden, fügen Sie -b hinzu Tag und suchen Sie nach einem bestimmten Boot.

Protokolle verfolgen

Verwenden Sie den -f oder --follow -Tag, um die neuesten Protokolle fortlaufend zu drucken:

journalctl -f

Die Ausgabe druckt die Protokolle, während sie in Echtzeit generiert werden. Die Option ermöglicht die Überwachung der Protokolle mit journalctl wie sie anhängen.

Um den Viewer zu verlassen, drücken Sie STRG +C .

Protokollnachrichten nach Priorität filtern

Filtern Sie die Protokollmeldungen nach Priorität mit dem folgenden Befehl:

journalctl -p <number or text priority>

Es gibt folgende Prioritäten:

  • Notfall – 0 oder emerg
  • Warnung - 1 oder alert
  • Kritisch - 2 oder crit
  • Fehler - 3 oder err
  • Warnung - 4 oder warning
  • Hinweis – 5 oder notice
  • Informieren - 6 oder info
  • Fehlerbehebung - 7 oder debug

Eine niedrigere Zahl gibt die Nachrichten mit der höchsten Priorität an. Wenn Sie eine einstufige Priorität angeben, werden auch alle Protokolle mit niedrigerer Priorität (kritischer) angezeigt.

Um beispielsweise Warnungen anzuzeigen, verwenden Sie:

journalctl -p 1

Oder alternativ:

journalctl -p alert

Die Ausgabe zeigt nur Meldungen auf der Alarmstufe und wichtigere (falls vorhanden).

Protokollnachrichten basierend auf einem bestimmten Benutzer filtern

Um Protokolle für einen Benutzer anzuzeigen, rufen Sie die Benutzer-ID (UID) ab mit:

id <user>

Um die ID für den aktuellen Benutzer abzurufen, lassen Sie <user> weg . Die Ausgabe zeigt den UID-Wert für den angegebenen Benutzer. Verwenden Sie das UID-Journalfeld, um Protokollmeldungen basierend auf dem spezifischen Benutzer zu filtern:

journalctl _UID=<UID>

Die Ausgabe filtert das Journalprotokoll basierend auf der angegebenen Benutzer-ID.

Hinweis: Eine vollständige Liste der Felder finden Sie unter systemd.journal-fields Handbuchseite:

man systemd.journal-fields

So bearbeiten Sie die systemd-Protokollausgabe

Ein wesentlicher Aspekt bei der Arbeit mit Protokollen als Systemadministrator ist die Formatierung der Protokollausgaben. Systemd bietet viele Methoden, um das visuelle Ergebnis zu manipulieren und die Daten im gewünschten Format abzurufen.

Nachfolgend finden Sie einige Standardbearbeitungsoptionen und Beispiele für die Ausgabe.

Ausgabe auf Standardausgang

Die journalctl Der Befehl zeigt die Ausgabe mit einem Pager an. Deaktivieren Sie den Pager mit:

journalctl --no-pager

Die resultierende Ausgabe ist die Standardausgabe (stdout). Verwenden Sie diese Option, wenn Sie die Protokolldaten mit Textbearbeitungstools oder Bash-Skripten parsen.

Ausgabe kürzen oder erweitern

Der journalctl Pager zeigt erweiterte Journalereignisse in der Ausgabe an. rechts drücken und linke Pfeiltasten hilft bei der Navigation durch Text, der nicht zur Bildschirmgröße passt.

Um dies einzuschränken, kürzen Sie journalctl Ausgabe verwenden Sie den --no-full Möglichkeit:

journalctl --no-full

Die Ausgabe beschränkt die Zeilen auf die Bildschirmgröße und fügt Auslassungspunkte hinzu (... ), um eine abgeschnittene Anzeige anzuzeigen.

Ausgabeformate

Der journalctl Der Befehl bietet verschiedene Optionen für Ausgabeformate. Die Syntax für das Ausgabeformat lautet:

journalctl -o <output format>

Einige der verfügbaren Formate sind:

  • cat - Zeigt nur das Nachrichtenfeld an.
  • export - Ausgabe im Binärformat, geeignet für Backups.
  • short - Erzeugt eine Ausgabe ähnlich der klassischen Syslog-Dateien.
  • short-precise - Zeigt die Zeit in Mikrosekunden an.
  • json - Formatiert Journaleinträge in einzeilige JSON-Einträge.
  • json-pretty - Formatiert in JSON-Strukturen in mehreren Zeilen.

Beispielsweise zum Anzeigen mit json-pretty formatieren, verwenden:

journalctl -o json-pretty

Verschiedene Formate ermöglichen die Verwendung der Protokolldaten in Datenbanken, Skriptdateien oder das Parsen durch Überwachungssoftware.

Protokollpflege

Das Speichern von Protokolldaten ist mit Kosten verbunden und nimmt Speicherplatz in Anspruch. Im Folgenden finden Sie einige Tipps und Tricks, um die Festplattennutzung zu ermitteln, Protokolldatendateien zu verwalten und Speicherplatz freizugeben, der von alten Protokolldateien verwendet wird.

Festplattennutzung anzeigen

Führen Sie den folgenden Befehl aus, um die Nutzung des Journaldatenträgers zu überprüfen:

journalctl --disk-usage

Die Ausgabe zeigt den gesamten belegten Speicherplatz der Festplatte durch archivierte und aktive Journale.

Alte Protokolle löschen

Löschen Sie alte Protokollarchive, indem Sie die gewünschte Größenbeschränkung festlegen. Der Befehl erfordert sudo, um die Dateien /var/log/journal zu löschen .

Stellen Sie beispielsweise die Größe auf 1M ein mit:

sudo journalctl --vacuum-size=1M

Geben Sie das sudo-Passwort ein und drücken Sie Enter . Die Ausgabe gibt die Dateinamen und -größen aus, und die letzte Zeile zeigt die Menge des freigegebenen Speichers an.

Alternativ können Sie archivierte Protokolle basierend auf der Zeit löschen. Alle Dateien, die älter als die eingestellte Zeit sind, werden gelöscht und Speicherplatz freigegeben. Um beispielsweise Dateien zu löschen, die älter als zwei Monate sind, führen Sie Folgendes aus:

sudo journalctl --vacuum-time=2months

Die Zeitsuffixe sind s , m , h , days , months , weeks , oder years .

Journal begrenzen

Die Journal-Konfigurationsdatei ermöglicht das Festlegen von Grenzwerten und das Steuern, wie viele Journald-Daten auf der Festplatte belegt werden. Um die Datei zu bearbeiten, führen Sie Folgendes aus:

sudo nano /etc/systemd/journald.conf

Die Datei enthält Beispielkonfigurationsfelder. Die folgenden Parameter befassen sich mit der Journalgröße und den Speichergrenzen:

  • SystemMaxUse - Maximaler persistenter Speicher, der vom Journal verwendet wird.
  • SystemKeepFree - Menge an freiem Speicherplatz, den ein Journal beim Hinzufügen von Einträgen zum dauerhaften Speicher hinterlässt.
  • SystemMaxFileSize - Legt die maximale Größe für Journaldateien im persistenten Speicher fest.
  • RuntimeMaxUse - Maximaler Speicherplatz für flüchtigen Speicher.
  • RuntimeKeepFree - Menge an freiem Speicherplatz für andere Zwecke beim Schreiben in flüchtigen Speicher.
  • RuntimeMaxFileSize - Legt die maximale Größe für Journaldateien im flüchtigen Speicher fest.

Dateigrößenkontrollen zielen auf archivierte Dateien ab, um die Grenzen zu erreichen. Entkommentieren Sie die Zeilen und legen Sie die Grenzen fest, um eine bessere Kontrolle über die Speicher- und Verbrauchsressourcen der Maschine zu erhalten.

Fazit

In diesem Handbuch wurde anhand von Beispielen gezeigt, wie Sie systemd-Journalprotokolle anzeigen, steuern und verwalten. Die journalctl Der Befehl ist ein wertvolles Tool, das bei der Fehlerbehebung von Linux-Diensten und der Erkennung von Systemfehlern hilft.


Linux
  1. Linux-Umgebungsvariablen:Lesen und Festlegen auf einem Linux-VPS

  2. Wie lösche ich Journalctl?

  3. Gewusst wie:Verwalten von Systemprotokollen mit Journalctl

  4. Anfängerleitfaden für „journalctl“ – So verwenden Sie Journalctl zum Anzeigen und Bearbeiten von Systemd-Protokollen

  5. So debuggen Sie den systemd-Startvorgang in CentOS/RHEL 7 und 8

Wie ich gelernt habe, mir keine Sorgen mehr zu machen und systemd zu lieben

So lesen Sie die Ausgabe und Verwendung von Linux Top Command

So richten Sie Webmail ein und lesen es

So löschen Sie Systemd-Journalprotokolle

So verwenden Sie journalctl zum Anzeigen und Bearbeiten von Systemd-Protokollen

Lesen und analysieren Sie Ihre Linux-Systemprotokolle mit Journalctl