Verwalten Sie Protokollnachrichten unter SystemD mit JournalCtl [Comprehensive Guide]

Verwalten Sie Protokollnachrichten unter SystemD mit JournalCtl [Comprehensive Guide]

Systemd ist ein modernster System- und Service-Manager für Linux-Systeme: ein Init-Dämon-Ersatz, der mit dem Systemstiefel parallel starten soll. Es wird nun in einer Reihe aktueller Mainstream -Verteilung unterstützt, darunter Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, CentOS usw.

Früher haben wir die Geschichte hinter 'init' und 'systemd' erklärt; Wo wir diskutierten, was die beiden Dämonen sind, warum 'drin"Technisch gesehen musste ersetzt werden durch"systemdsowie die Hauptmerkmale von systemd.

Einer der Hauptvorteile von SystemD gegenüber anderen gemeinsamen Init -Systemen ist die Unterstützung des zentralisierten Managements von System- und Prozessen, die mithilfe eines Journals protokolliert werden. In diesem Artikel lernen wir, wie man Protokollnachrichten unter systemd verwaltet und anzeigen Journalctl Befehl in Linux.

Wichtig: Bevor Sie sich in diesem Handbuch weiter bewegen, möchten Sie möglicherweise lernen, wie Sie "Systemd" -Dienste und -Initen mithilfe von "SystemCTL" verwalten und neue Serviceeinheiten in systemd mit Shell -Skripten unter Linux erstellen und ausführen. Wenn Sie jedoch mit all den oben genannten in Ordnung sind, lesen Sie weiter durch.

Konfigurieren von Journald zum Sammeln von Protokollnachrichten unter Systemd

Journald ist ein Daemon, der Journaleinträge aus dem gesamten System versammelt und schreibt; Hier.

Sie können das Verhalten von kontrollieren Journald über die Standardkonfigurationsdatei: /etc/systemd/journald.Conf die zur Kompilierungszeit erzeugt wird. Diese Datei enthält Optionen, deren Werte Sie ändern können, um Ihre lokalen Umgebungsanforderungen zu erfüllen.

Im Folgenden finden Sie ein Beispiel, wie die Datei aussieht, die mit dem CAT -Befehl angezeigt wird.

$ cat/etc/systemd/journald.Conf 
Journald -Konfigurationsdatei
# Siehe Journald.Conf (5) für Details. [Journal] #Storage = auto #compress = yes #Seal = yes # #splitmode = uid #syncintervalsec = 5m #ratelimitInterval = 30S #ratelimitBurst = 1000 #systemMaxuse = #systemkeepfree = #systemmaxFileSize = #systemMaxFiles = 100 #runTimaxuse = # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #RuntimemaxFileSize = #runtimemaxFiles = 100 #maxretentionec = #maxFilesec = 1month #ForwardTOSYSLog = yes #tewesTOKMSG = nein # #ForwardToConsole = no # # # # #teartoWall = yes # #ttypath =/dev/console #maxlevelstore = debug #mAxlevel #maxlevel #maxlevel #maxlevel MaxLevelConsole = info #maxLevelwall = Emerg 

Beachten Sie, dass verschiedene Paket -Installationen und Konfigurationsauszüge in verwenden /usr/lib/systemd/*.Conf.D/ und Laufzeitkonfigurationen finden Sie in /run/systemd/journald.Conf.D/*.Conf was Sie möglicherweise nicht unbedingt verwenden.

Aktivieren Sie die Datenspeicherung auf die Zeitschrift auf der Festplatte

Eine Reihe von Linux -Verteilungen, einschließlich Ubuntu und derenivate wie Linux Mint.

Es ist möglich, dies zu aktivieren, indem Sie die “festlegen“Lagerung”Option zu“hartnäckig" Wie nachfolgend dargestellt. Dies erstellt die /var/log/journal Verzeichnis und alle Zeitschriftendateien werden darunter gespeichert.

$ sudo vi/etc/systemd/journald.conf oder $ sudo nano/etc/systemd/journald.Conf 
[Journal] Storage = persistent 

Weitere Einstellungen finden Sie in der Bedeutung aller Optionen, die unter dem konfiguriert werden sollen "[Tagebuch]" Abschnitt durch Eingabe.

$ MAN Journald.Conf 

Festlegen der korrekten Systemzeit mit dem Befehl Timedatectl

Stellen Sie für eine zuverlässige Protokollverwaltung unter Systemd mit Journald Service sicher, dass die Zeiteinstellungen einschließlich der Zeitzone im System korrekt sind.

Um die aktuellen Datums- und Zeiteinstellungen in Ihrem System anzuzeigen.

$ Timedatectl oder $ Timedatectl Status Ortszeit: Do 2017-06-15 13:29:09 ESSENSUME ESSENSCHAFT: THU 2017-06-15 10:29:09 UTC RTC-Zeit: Do 2017-06-15 10:29:09 Zeitzone: Afrika/Kampala (Eat, +0300) Netzwerkzeit auf: Ja NTP Synchronized: Ja RTC in lokalem TZ: Nein 

Verwenden Sie die folgenden Befehle, um die richtige Zeitzone- und möglicherweise Systemzeit festzulegen.

$ sudo Timedatectl Set-TimeZone Afrika/Kampala $ sudo Timedatectl Set-Time "13:50:00" 

Protokollnachrichten mit dem Befehl JournalCtl anzeigen

Journalctl ist ein Dienstprogramm, mit dem der Inhalt des Systemd Journal angezeigt wird (das vom Journald Service geschrieben wurde).

Um alle gesammelten Protokolle ohne Filterung anzuzeigen, geben Sie an.

$ journalctl 
Protokollnachrichten anzeigen
-- Die Protokolle beginnen mit dem Mi 2017-06-14 21:56:43 EAT, enden bei Thu 2017-06-15 12:28:19 Eat 14. Juni 21:56:43 Tecmint Systemd-Journald [336]: Runtime Journal (/Run /log/journal 14. Juni 21:56:43 Tecmint Kernel: Initialisierung von CGGroup Subsys CPUSET 14. Juni 21:56:43 Tecmint Kernel: Initialisierung der CGGROUP SUBSSYS CPU 14.2. 56:43 Tecmint Kernel: Linux Version 4.4.0-21-Generik.4.0-21- 14. Juni 21:56:43 Tecmint Kernel: Kernel unterstützt CPUS: Juni 14.22. Kernel: Centaur Centaurhauls 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: xstate_offset [2]: 576, xstate_sies [2] 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: Support XSave Feature 0x01: 'x87:' x87 FLO 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: unterstützend xsave feature 0x02: 'sse reg : 43 Tecmint -Kernel: x86/FPU: Aktivierte XState -Funktionen 0x7, Kontext SI 14. Juni 21:56:43 Tecmint Kernel: x86/FPU: Verwenden von 'Eifer' FPU -Kontextschalter. 14. Juni 21:56:43 Tecmint Kernel: E820: BIOS-Bereitstellter physischer Ram-Karte: Juni 14.2. e820: [mem 0x0000000000090000-0x00000000000 Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201 Jun 14 21:56 : 43 Tecmint-Kernel: BIOS-E820: [MEM 0x0000000020200000-0x00000000400 

Protokollnachrichten basierend auf Stiefeln anzeigen

Sie können eine Liste von Startnummern (relativ zum aktuellen Start), ihren IDs und den Zeitstempeln der ersten und letzten Nachricht, die dem Boot mit dem Start entsprechend sind, anzeigen --Listenstiefel Möglichkeit.

$ journalctl --list-boots -1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT-Thu 2017-06-15 1 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT-Thu 2017-06- 15 1 

Verwenden Sie die Journaleinträge aus dem aktuellen Start (Nummer 0), um die -B Wechseln Sie wie dieses (wie der Beispielausgang oben).

$ journalctl -b 

Und um ein Tagebuch aus dem vorherigen Start zu sehen, verwenden Sie die -1 relativer Zeiger mit dem -B Option wie unten.

$ journalctl -b -1 

Verwenden Sie alternativ die Start -ID wie diese.

$ journalctl -B 9FB590B48E1242F58C2579DEFDBBDDC9 

Filterungsprotokollnachrichten basierend auf der Zeit

Fügen Sie das hinzu, um die Zeit im koordinierten Universal Time (UTC) -Format zu verwenden --koordinierte Weltzeit Optionen wie folgt.

$ journalctl -UTC 

Alle Einträge seit einem bestimmten Datum und einer bestimmten Uhrzeit zu sehen, e.G. 15. Juni 2017 um 8:15 Uhr geben Sie diesen Befehl ein.

$ journalctl --- 

Anzeigen neuerer Protokollnachrichten

Verwenden Sie die neuesten Protokollnachrichten (10 standardmäßig), um die -N Flagge wie unten gezeigt.

$ journalctl -n $ journalctl -n 20 

Anzeigen von Protokollnachrichten, die vom Kernel generiert werden

Um nur Kernel -Nachrichten zu sehen, ähnlich wie bei der DMESG -Befehlsausgabe, können Sie die verwenden -k Flagge.

$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbdc9 

Anzeigen von Protokollnachrichten, die von Einheiten generiert werden

Um alle Zeitschrifteneinträge für eine bestimmte Einheit anzusehen, verwenden Sie die -u wie folgt wechseln.

$ journalctl -u apache2.Service 

Geben Sie diesen Befehl zum aktuellen Start ein.

$ journalctl -b -u apache2.Service 

Verwenden Sie dies, um Protokolle aus dem vorherigen Start anzuzeigen.

$ journalctl -b -1 -u Apache2.Service 

Im Folgenden finden Sie einige andere nützliche Befehle:

$ journalctl -u apache2.Service $ journalctl -u apache2.Service -seit heute $ journalctl -u apache2.Service -U Nagios.Gottesdienst -seit gestern 

Anzeigen von Protokollnachrichten, die durch Prozesse generiert werden

Um Protokolle anzuzeigen, die durch einen bestimmten Prozess generiert werden, geben Sie fest.

$ journalctl _pid = 19487 $ journalctl _pid = 19487 -Since heute $ journalctl _pid = 19487 -Sach gestern 

Anzeigen von Protokollnachrichten, die von der Benutzer- oder Gruppen -ID generiert werden

Um Protokolle anzuzeigen, die von einem bestimmten Benutzer oder einer bestimmten Gruppe generiert werden, geben Sie die Benutzer- oder Gruppen -ID wie diese an.

$ journalctl _uid = 1000 $ journalctl _UID = 1000 -seit heute $ journalctl _uid = 1000 -b -1 -Sinne heute 

Anzeigen von Protokollen, die von einer Datei generiert werden

Um alle von einer Datei generierten Protokolle anzuzeigen (möglicherweise eine ausführbare Datei), wie z.

$ journalctl/usr/bin/dbus-daemon $ journalctl/usr/bin/bash 

Protokollnachrichten nach Priorität anzeigen

Sie können die Ausgabe auch basierend auf Nachrichtenprioritäten oder Prioritätsbereichen mithilfe der Ausgabe filtern -P Flagge. Die möglichen Werte sind: 0 - Emergen, 1 - Alarm, 2 - Crit, 3 - ERR, 4 - WARNUNG, 5 - Bekanntmachung, 6 - Info, 7 - Debug):

$ journalctl -p err 

Um einen Bereich anzugeben, verwenden Sie das unten stehende Format (ENTWORT ZUM WARNUNG).

$ journalctl -p 1… 4 oder $ journalctl -p Emerg… Warnung 

Protokollnachrichten in Echtzeit anzeigen

Sie können praktisch Protokolle ansehen, wenn sie mit dem geschrieben werden -F Option (ähnlich wie Tail -f Funktionalität).

$ journalctl -f 

Handhabungsjournal -Display -Formatierung

Wenn Sie die Ausgangsformatierung der Journaleinträge steuern möchten, fügen Sie die hinzu Fahnen und verwenden Sie diese Optionen: Katze, Export, JSON, JSON-Pretty, Json-Sse, Short, Short-ISO, Kurzmonoton, Kurzpreis und ausführlich (Überprüfen Sie die Bedeutung der Optionen auf der Mannseite:

Der Katze Die Option zeigt die tatsächliche Nachricht jedes Journaleintrags ohne Metadaten an (Zeitstempel usw.).

$ journalctl -b -u apache2.Service -o Katze 

Verwalten von Zeitschriften auf einem System

Verwenden Sie die Journal -Datei auf interne Konsistenz, um die interne Konsistenz zu überprüfen --verifizieren Möglichkeit. Wenn alles in Ordnung ist, sollte der Ausgang einen Pass angeben.

$ journalctl -pass:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/System.Journal 491F68: Unbenutzte Daten (Eintrag_offset == 0) Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail -Protected] 9866c3d4dd.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail Protected] 5D8945A9E.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail geschützt] 1Becab02f.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail Protected] 01CfCedff.Tagebuch 

Löschen alter Journal -Dateien

Sie können auch die aktuelle Festplattennutzung aller Journal -Dateien mit dem anzeigen --Festplattennutzung Optionen. Es zeigt die Summe der Festplattennutzung aller archivierten und aktiven Journal -Dateien:

$ journalctl-disk-usage 

So löschen Sie alte (archivierte) Journal -Dateien, führen Sie die folgenden Befehle aus:

$ sudo journalctl-vacuum-size = 50m #delete-Dateien, bis der von ihnen verwendete Speicherplatz unter die angegebene Größe $ sudo journalctl-vacuum-time = 1years #delete-Dateien fällt, sodass alle Journal-Dateien keine Daten enthalten als die angegebene Zeitspan enthalten $ sudo journalctl-vacuum-files = 4 #delete-Dateien, so dass nicht mehr als die angegebene Anzahl separater Journaldateien im Speicherort bleiben 

Rotierende Journaldateien

Zu guter Letzt können Sie Journald anweisen, Journal -Dateien mit dem zu drehen --drehen Möglichkeit. Beachten Sie, dass diese Richtlinie erst nach Abschluss des Rotationsvorgangs zurückgibt:

$ sudo journalctl - -rotate 

Eine ausführliche Nutzungsanleitung und Optionen finden Sie auf der Seite JournalCtl Man wie folgt.

$ MAN Journalctl 

Schauen Sie sich einige nützliche Artikel an.

  1. Verwaltung des Systems für Systemstarts und -dienste (sysvinit, systemd und upstart)
  2. Petiti - Ein Open -Source -Log -Analyse -Tool für Linux -Sysadminen
  3. So richten und verwalten Sie die Protokolldrehung mithilfe von Logrotate unter Linux
  4. LNAV - Anschauen und analysieren Sie Apache -Protokolle von einem Linux -Terminal aus

Das war es fürs Erste. Verwenden Sie das Feedback von unten, um Fragen zu stellen oder Ihre Gedanken zu diesem Thema hinzuzufügen.