CodeGym /Kurse /Docker SELF /Protokollierung und Ansicht von Systemlogs: Kommandos `jo...

Protokollierung und Ansicht von Systemlogs: Kommandos `journalctl`

Docker SELF
Level 3 , Lektion 1
Verfügbar

Protokollierung und Ansicht von Systemlogs: Kommandos journalctl

1. Warum mit Logs arbeiten?

Protokolle (oder Logs) sind dein persönlicher "Detektiv", der jede wichtige Operation im System aufzeichnet. Sie erfassen die Aktionen des Kernels, der Anwendungen, Dienste und anderer Systemkomponenten. Logs sind ein äußerst wichtiges Werkzeug zur Diagnose von Problemen und zur Überwachung des Systembetriebs.

Stell dir vor, dein Server reagiert plötzlich nicht mehr. Anstatt wie Sherlock Holmes herumzurätseln, was schiefgelaufen ist, kannst du einfach in die Protokolle schauen – dort steht alles schwarz auf weiß. Zum Beispiel: "Dienst ssh ist abgestürzt", "Festplatte ist voll", "Katze ist über die Tastatur gelaufen und hat einen wichtigen Dienst gestoppt". Logs erzählen dir alles.

Die Arbeit mit Systemprotokollen hilft dir dabei:

  1. Probleme zu diagnostizieren. Wenn etwas schiefgeht, kannst du in den Logs Fehler oder Warnungen finden.
  2. Dienste zu überwachen. Zum Beispiel herausfinden, warum die PostgreSQL-Datenbank gestoppt wurde oder wann der Webserver zuletzt aktualisiert wurde.
  3. Analysen zu sammeln. Überwachung der Leistung und Metriken von Diensten.
  4. Sicherheit zu erhöhen. Logs können dir Versuche zeigen, über SSH einzubrechen, oder unbefugte Zugriffe aufdecken.

2. Einführung in journalctl

journalctl ist ein mächtiger Befehl zum Anzeigen und Filtern von System-Logs in Linux. Es arbeitet mit systemd-journald — einem Logging-System, das von systemd verwaltet wird.

Grundlegende Aktionen mit journalctl

Zuallererst schauen wir uns an, wie wir dieses Tool nutzen können. Öffne das Terminal und gib ein:

journalctl

Dieser Befehl zeigt dir alle System-Logs, die chronologisch sortiert sind. Falls du etwas Einfaches erwartest, mach dich bereit: Logs füllen normalerweise mehrere Bildschirme. Keine Panik, wir lernen gleich, wie man sie filtert.

Um die Anzeige der Logs zu beenden, drücke q (du hast bestimmt schon die Ähnlichkeit zwischen less und journalctl bemerkt, oder?).


Logs nach Zeit filtern

Jetzt werden wir die Logs magisch auf einen bequemeren Bereich reduzieren.

Logs der letzten Stunde anzeigen

journalctl --since "1 hour ago"

Logs für einen bestimmten Tag anzeigen

journalctl --since "2023-10-31"

Einen Zeitbereich festlegen

Möchtest du Ereignisse von 8 Uhr bis 9 Uhr sehen? Kein Problem:

journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"

Das Filtern nach Zeit ist nützlich, z. B. wenn du weißt, dass ein Problem zu einem bestimmten Zeitpunkt begann. Vergleich: Du liest nicht das ganze Buch, um herauszufinden, wer der Mörder ist — du schaust einfach die letzten Seiten an.


Mit Logs eines bestimmten Dienstes arbeiten

Statt sich mit dem ganzen System zu beschäftigen, kannst du dich auf einen bestimmten Dienst konzentrieren. Zum Beispiel möchtest du sehen, wie der Webserver nginx arbeitet:

journalctl -u nginx

Wenn du nur Einträge der letzten Stunde sehen möchtest (wir alle lieben frische Infos):

journalctl -u nginx --since "1 hour ago"

Kurzliste von Beispielen:

  • -u ssh: Logs für den SSH-Dienst.
  • -u cron: Logs für CRON-Jobs.
  • -u mysql: Logs der MySQL-Datenbank.

Logs in Echtzeit lesen

Wenn du gerade etwas reparierst, könnte es nützlich sein, die Logs in Echtzeit zu beobachten — wie bei einem Fußballspiel. Dafür nutze den Befehl:

journalctl -f

Die Option -f funktioniert ähnlich wie tail -f, indem sie neue Log-Einträge in Echtzeit anzeigt.

Zum Beispiel, versuche den Befehl auszuführen und parallel einen Dienst neu zu starten:

sudo systemctl restart ssh

Du wirst Änderungen sehen — ein Eintrag über den Neustart erscheint in den Logs.


Fehler in Logs suchen

Oft sind Logs lang, und dort manuell nach relevanten Informationen zu suchen, ist fast wie die Nadel im Heuhaufen zu suchen. Deshalb kannst du nach Schlüsselwörtern suchen.

Einfache Nutzung:

journalctl | grep "ERROR"

Dieses Beispiel zeigt nur die Zeilen, die das Wort ERROR enthalten. Du kannst ERROR durch etwas anderes ersetzen, z. B. WARNING, failed oder panic.


3. Besondere Optionen für journalctl

Anzeigen von Einträgen nur nach einem Neustart

Möchtest du wissen, was nach dem letzten Start des Systems passiert ist? Geheimnisvoll? Einfach so machen:

journalctl -b

Jeder Neustart des Systems wird als separater "Block" erfasst. Wenn du Einträge nach dem vorletzten Start ansehen möchtest (ja, das kann nützlich sein):

journalctl -b -1

Filterung nach Benutzer oder PID

Manchmal muss man die Aktionen eines bestimmten Benutzers oder Prozesses verfolgen. Zum Beispiel:

journalctl _UID=1000

Ersetze 1000 durch die Benutzer-ID (du kannst die ID mit dem Befehl id herausfinden).

Für die Filterung nach PID (Prozess-ID):

journalctl _PID=1234

4. Praktische Beispiele

  1. Fehler im SSH-Dienst finden.

    Du möchtest wissen, warum SSH die Verbindung verweigert. Verwende:

    journalctl -u ssh | grep "ERROR"
    
  2. Analyse der Protokolle der letzten 24 Stunden für CRON.

    Angenommen, du überprüfst, warum dein tägliches Skript nicht ausgeführt wurde:

    journalctl -u cron --since "yesterday"
    
  3. Echtzeit-Monitoring des Webservers.

    Der Webserver ist unter Last? Überprüfe die Protokolle auf Fehler:

    journalctl -u nginx -f
    

Übung zur Selbstpraxis

  1. Finde die Fehlerprotokolle für den SSH-Dienst der letzten 24 Stunden.
  2. Nutze journalctl, um Protokolle für CRON nur für den Morgen auszugeben. Stelle sicher, dass der Befehl mit dem korrekten Zeitbereich funktioniert.
  3. Richte ein Echtzeit-Monitoring der systemd-Protokolle ein und starte einige Systemdienste, um deren Status in den Protokollen zu sehen.

Logging ist nicht nur ein Nachschlagewerk für Fehler oder Problemdiagnosen. Es ist dein geheimer Agent, der das gesamte Betriebssystem überwacht. Sobald du den Befehl journalctl beherrschst, hast du ein mächtiges Werkzeug zur Analyse, Optimierung und Sicherstellung einer stabilen Linux-Systemarbeit unter allen Bedingungen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION