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
erfolgensudo 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ührtjournalctl _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
eingebenjournalctl -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
eingebenjournalctl -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
eingebensudo 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.