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

Gewusst wie:Verwalten von Systemprotokollen mit Journalctl

Einführung

In einigen der neueren Linux-Distributionen wurde „init.d“ oder „rsyslogd“ durch ein Programm namens JournalCTL ersetzt. Früher befanden sich Protokolle in der Regel an einem bestimmten Speicherort für jede einzelne Protokolldatei, anstatt einfach zu finden, zu verwalten und zu manipulieren. Systemd erleichterte den Zugriff auf diese Protokolldateien, indem es sie zentralisierte und alle Kernel- und Benutzerprozesse in einem „Journal“ protokollierte. Journalctl ist die neueste Version davon, was die Verwaltung dieser Dateien noch einfacher macht.

In diesem Handbuch erklären wir die Grundlagen von journalctl sowie einen kurzen Überblick über vorgeschlagene Verwendungen des Programms.

Voraussetzungen

Es muss eine Linux-Distribution mit journalctl als Systemprotokollverwaltungsprogramm vorhanden sein, z. B. CentOS 7. Wenn Sie keinen Server haben, sollten Sie einen superschnellen virtuellen privaten SSD-Server von Atlantic.Net in Betracht ziehen.

So verwalten Sie Systemprotokolle mit Journalctl

Systemzeit einstellen

Bevor Sie mit irgendetwas anderem beginnen, wird dringend empfohlen, die Systemzeit einzustellen. Da systemd als binäres Journal protokolliert, können Sie Ihre Aufzeichnungen entweder in UTC oder lokaler (Server-)Zeit protokollieren. Standardmäßig zeigt systemd die Ergebnisse in Ortszeit an. Um spätere Verwirrung zu vermeiden, überprüfen wir, ob die Uhrzeit richtig eingestellt ist. Systemd hat ein eingebautes Programm namens „timedatectl“, das für diesen Zweck vorgesehen ist.

Überprüfen Sie zunächst, ob Ihre Zeitzone in den Zonenoptionen verfügbar ist:

timedatectl list-timezones

Dies zeigt alle verfügbaren Zeitzonen auf Ihrem Server. Nachdem Sie diejenige gefunden haben, die Ihrem Standort (oder Ihrem Serverstandort) entspricht, legen Sie sie fest:

sudo timedatectl set-timezone (zone)

Anschließend prüfen wir, ob dies ordnungsgemäß erfolgt ist:

timedatectl status

In der ersten Zeile wird die korrekte Uhrzeit angezeigt.

Zugriffskontrolle

usermod -a -G adm username

Ersetzen Sie „Benutzername“ durch den Namen des Benutzers. Dieser Benutzer erhält den gleichen journalctl-Zugriff wie der Root-Benutzer. Diese Steuerung funktioniert jedoch nur, wenn der persistente Speicher aktiviert ist.

Einfache Protokollanzeige

Es gibt einige Befehle, die an dieser Stelle ausgegeben werden können. Der grundlegende Befehl zeigt eine Ausgabe aller allgemeinen Einträge an, wobei die ältesten Einträge zuerst angezeigt werden:

journalctl

Obwohl Sie dadurch alle Protokolldateien erhalten, erhalten Sie damit alle Protokolldateien. Das bedeutet, dass Sie Hunderte oder Tausende oder mehr von Protokollzeilen angezeigt bekommen, wenn Sie die Möglichkeit dazu haben. Dies ähnelt dem, was Sie sehen würden, wenn Sie in früheren Versionen in „/var/log/messages/“ suchen würden.

Aktuelle Startsitzung

Wir haben auch einen Befehl, der Protokolle anzeigt, die nur beim aktuellen Bootvorgang aufgetreten sind.

journalctl -b

Das bedeutet, dass keine Informationen aus früheren Startsitzungen angezeigt werden.

Vorherige Startsitzungen

Sollten Sie Protokolle für frühere Startsitzungen überprüfen müssen, gibt es auch dafür eine Option. Einige Versionen aktivieren standardmäßig die Protokollierung früherer Startsitzungen. Um sicherzustellen, dass Ihr Konto diese protokolliert, empfehlen wir Ihnen, diese Funktion zu aktivieren. Dies kann durch Erstellen des Verzeichnisses

erfolgen
sudo mkdir -p /var/log/journal

oder indem Sie die Journal-Konfigurationsdatei direkt bearbeiten

sudo nano /etc/systemd/journald.conf

Setzen Sie in der Datei unter [Journal] die Option „Storage=“ auf „persistent“, damit die persistente Protokollierung aktiviert wird. Speichern und verlassen Sie diese Datei und die Einstellungen werden in Zukunft wirksam.
Sobald dies gespeichert wurde, können Sie verfügbare Optionen für Boot-Dateien zur Überprüfung anzeigen,

journalctl --list-boots

Sie sehen eine Zeile für jede verfügbare Startsitzung. Die Offset-ID ist die erste Spalte, während die Boot-ID die zweite Spalte ist. Sie können entweder die Offset-ID oder die Boot-ID verwenden, um den Befehl auszugeben:

journalctl -b (offset/boot ID)

Spezifischer Zeitrahmen

Möglicherweise möchten Sie stattdessen die Protokolldateien in einem bestimmten Zeitrahmen überprüfen, der sich über mehrere Startsitzungen erstrecken oder auf ein bestimmtes Zeitfenster innerhalb einer Startsitzung beschränken kann. Die Begrenzungen –seit und –bis können gesetzt werden, die nur Ereignisse nach und vor dem spezifischen Protokoll anzeigen.
Für alle Zeitwerte sollte das folgende Format verwendet werden:

YYYY-MM-DD HH:MM:SS

Wenn Sie die Ereignisse sehen möchten, die seit dem 5. Juli 2015 um 10:00 Uhr passiert sind, können wir dies mit dem folgenden Befehl erreichen:

journalctl --since “2015-07-05 10:00:00”

Bitte beachten Sie, dass diese entweder auf der Serverzeit oder UTC basieren, je nachdem, was Sie zuvor in diesem Tutorial in Ihren Einstellungen festgelegt haben.
Wenn das Datum weggelassen wird, nimmt das Journal das heutige Datum an. Wird die Uhrzeit weggelassen, wird Mitternacht (00:00:00) angenommen. Sie müssen auch das Sekundenfeld nicht angeben, in diesem Fall wird von „00“ Sekunden ausgegangen.

Es gibt auch freundliche Befehle, wie zum Beispiel

journalctl --since yesterday

und

journalctl --since 02:00 --until “3 hours ago”

Filteroptionen

Nach Einheit

Die nützlichste verfügbare Funktion ist die Einheitenfilterung. Die -u-Filterung bietet die Option, nur eine bestimmte „Einheit“ anzuzeigen, sodass Sie Dinge sehen können, die nur in Bezug auf ein bestimmtes Programm oder System passiert sind. Wie immer können Sie hier Filter für Zeiträume hinzufügen.

journalctl -u nginx.service

oder

journalctl -u nginx.service --since yesterday

Nach Prozess-, Benutzer- oder Gruppen-ID

Wenn Sie bereits genügend Informationen überprüft haben, um die PID des gesuchten Prozesses abzurufen, können Sie stattdessen danach filtern. Dies wird mit _PID

ausgeführt
journalctl _PID=4345

Nach Standort

Das Filtern nach Pfadpositionen ist ebenfalls verfügbar. Wenn Sie einen ausführbaren Pfad auswählen, zeigt journalctl alle Einträge an, die sich auf diese ausführbare Datei beziehen. Wenn Sie beispielsweise nach Protokollen mit Bash suchen,

journalctl /usr/bin/bash

Diese Methode enthält normalerweise detailliertere Informationen zu Prozessen und untergeordneten Prozessen, sofern verfügbar. Manchmal ist dies jedoch keine Option.

Kernel-Meldungen

Kernel-Meldungen befinden sich normalerweise in der dmesg-Ausgabe, wir können diese jedoch auch mit journalctl abrufen. Das wäre mit dem -k oder -dmesg Filter.

journalctl -k

Dies zeigt Kernelmeldungen an, die während der aktuellen Startsitzung aufgetreten sind. Auch dies kann jederzeit mit den zuvor erwähnten Optionen geändert werden. Wenn Sie die Kernel-Meldungen der vorherigen Boot-Sitzung überprüfen möchten,

journalctl -k -b -1

Priorität

Priorität ist häufig die bevorzugte Methode zum Überprüfen von Protokollen. Journalctl kann verwendet werden, um Nachrichten nur oberhalb einer bestimmten Prioritätsstufe anzuzeigen. Das Folgende sind die Prioritätsstufen:

0:Not

1:Warnung

2:kritisch

3:Fehler

4:Warnung

5:Hinweis

6:Informationen

7:debuggen

Sie können entweder den Namen der Prioritätsstufe oder die entsprechende Nummer verwenden. Wenn Sie nur Protokolle mit Warnpriorität oder höher sehen möchten, können Sie den Befehl

eingeben
journalctl -p warning -b

oder

journalctl -p 4 -b

Angegebenes Feld

Um die Liste der Zeitschriften anzuzeigen, die in einem bestimmten Feld vorkommen, verwenden Sie den Modifikator -F

journal -F fieldname

wobei „Feldname“ durch das gesuchte Feld ersetzt wird. Sie haben auch die Möglichkeit, nur Logeinträge anzuzeigen, die zu einer bestimmten Bedingung passen

journalctl fieldname=value

Ausgabe kürzen oder erweitern

Journalctl kann geändert werden, um die Ausgabedatenanzeige zu verkleinern oder zu erweitern. Standardmäßig zeigt journalctl den gesamten Eintrag an, sodass Sie mit den Pfeiltasten nach rechts scrollen müssen. Wir können diese Ausgabe stattdessen abschneiden, wodurch Auslassungspunkte für entfernte Informationen mit der Option –no-full angezeigt werden.

journalctl --no-full

Alternativ können Sie journalctl anweisen, alle Informationen anzuzeigen, unabhängig davon, ob ein Zeichen als nicht druckbar angesehen wird. Dies geschieht mit dem Modifikator -a.

journalctl -a

Zur Standardausgabe wechseln

journalctl --no-pager

Ausgabeformate

Wenn Sie, wie oben besprochen, einen Texteditor für Journaleinträge verwenden, kann das Journal bei Bedarf in anderen Formaten angezeigt werden. Dies kann mit dem Modifikator -o und einem Formatbezeichner erfolgen.

Beispielsweise können Sie das Journal in JSON lesen, indem Sie

eingeben
journalctl -b -u nginx -o json

Sie können Folgendes für Anzeigeoptionen verwenden:

Katze — Zeigt das Nachrichtenfeld selbst an

exportieren — Binäres Format zum Übertragen oder Sichern

json — Standard-JSON, ein Eintrag pro Zeile

json-hübsch — JSON-Format, aber einfacher zu lesen

json-sso — JSON-Format umschlossen, um vom Server gesendete Ereignisse hinzuzufügen kompatibel zu machen

kurz — Standard-Syslog-Ausgabe

kurz-iso — Standardausgabe, die Zeitstempel der Wanduhr nach ISO 8601 anzeigt

kurz-monoton — Standardausgabe mit monotonem Zeitstempel

kurz präzise — Standardausgabe mit Mikrosekunden-Zeitstempel

ausführlich — Zeigt alle Journalfelder für diesen Eintrag an, einschließlich versteckt

Aktive Prozessüberwachung

Journalctl ahmt nach, welche Administratoren tail zur Überwachung verwenden. Dies wurde in journalctl eingebaut, um den Zugriff auf diese Funktionen zu ermöglichen, ohne zusätzliche Tools einbinden zu müssen.

Neueste Protokolle anzeigen

Die Option -n kann verwendet werden, um eine bestimmte Anzahl von Datensätzen anzuzeigen. Wenn Sie keine Änderungsnummer angeben, werden standardmäßig zehn (10) Ergebnisse angezeigt.

journalctl -n

Stattdessen können Sie angeben, wie viele Einträge Sie sehen möchten

journalctl -n 20

Verfolgen von Protokollen

Der Modifikator -f kann verwendet werden, um Protokollen zu folgen, während sie geschrieben werden.

journalctl -f

Journalpflege

Es gibt ein paar Befehle, die verwendet werden können, um einige ältere Protokolle zu Gunsten Ihres Festplattenspeichers zu bereinigen.

Erstens können Sie herausfinden, wie viel Speicherplatz von Journalen belegt wird, indem Sie den Modifikator –disk-usage verwenden.

journalctl --disk-usage

Es gibt zwei verschiedene Möglichkeiten, dies zu bereinigen. Die erste besteht darin, das Journal basierend auf der Größe zu verkleinern. Dadurch werden Einträge vom ältesten zum neuesten entfernt, bis der gewünschte Speicherplatz erreicht ist.

sudo journalctl --vacuum-size-2G

Die alternative Möglichkeit, das Tagebuch zu verkleinern, ist bis zu einem bestimmten Datum. Die Option –vacuum-time löscht alle Einträge bis zu einem bestimmten Datum.

Um nur Einträge aus dem letzten Jahr zu behalten, können Sie

eingeben
sudo journalctl --vacuum-time-1years

Journalgröße begrenzen

Sie haben die Möglichkeit, den Speicherplatz zu begrenzen, den Zeitschriften einnehmen dürfen.

nano /etc/systemd/journald.conf

Diese Änderungen können mit einer der folgenden Feldänderungen vorgenommen werden

SystemMaxUse= Maximaler Speicherplatz

SystemKeepFree= Speicherplatz, der verfügbar gehalten werden sollte

SystemMaxFileSize= Wie groß einzelne Journaldateien werden können, bevor sie rotiert werden

RuntimeMaxUse= Maximaler Speicherplatz, der innerhalb des flüchtigen Speichers verwendet werden kann (/run filesystem)

RuntimeKeepFree= Die Menge an Speicherplatz, die für andere im flüchtigen Speicher (/run filesystem) verfügbar gehalten werden soll

RuntimeMaxFilesize= Wie groß eine einzelne Journaldatei im flüchtigen Speicher (innerhalb des /run-Dateisystems) werden kann, bevor sie rotiert wird

Vielen Dank, dass Sie dieser Anleitung gefolgt sind. Bitte schauen Sie hier wieder vorbei, um weitere Updates zu erhalten und einen marktführenden VPS-Hosting-Server von Atlantic.Net in Betracht zu ziehen.


Linux
  1. So verwenden Sie Ansible zum Einrichten der Systemüberwachung mit Prometheus

  2. Wie lösche ich Journalctl?

  3. So verwenden Sie journalctl zum Analysieren von Protokollen in Linux

  4. So überwachen Sie Systemauthentifizierungsprotokolle in Ubuntu

  5. So erhalten Sie Systemstatistiken mit node.js

So überprüfen/reparieren Sie das Linux-Dateisystem beim Booten

So exportieren Sie Ihre Serverprotokolle mit Rsyslog in Centos 8

Systemprotokolle

Lesen und analysieren Sie Ihre Linux-Systemprotokolle mit Journalctl

Verwalten von Protokollen mit Logrotate auf Ubuntu

Journalctl:So lesen und bearbeiten Sie Systemd-Protokolle