Skip to main content

2.12 Protokolle und Logs systematisch auswerten

Protokolldateien gehören zu den wichtigsten Informationsquellen bei der Fehleranalyse. Sie dokumentieren Ereignisse, Zustandsänderungen, Warnungen und Fehler, die während des Betriebs eines Systems oder einer Anwendung auftreten.

Logs können unter anderem folgende Fragen beantworten:

  • Wann begann die Störung?
  • Welches System oder welcher Dienst meldete den Fehler zuerst?
  • Welcher Benutzer, Prozess oder Dienst war beteiligt?
  • Trat unmittelbar vorher eine Konfigurationsänderung auf?
  • Ist das Problem einmalig oder wiederkehrend?
  • Sind mehrere Systeme zur gleichen Zeit betroffen?
  • Welche Fehlernummer, Ereignis-ID oder Statusmeldung wurde protokolliert?
  • War ein Fehler die Ursache oder nur eine Folge eines anderen Problems?

Grundregel: Nicht mit dem auffälligsten Fehler beginnen, sondern mit dem ersten relevanten Ereignis in der zeitlichen Kette.


1. Kennzeichnungen und Sicherheitsregeln
KennzeichnungBedeutung
[RO]Liest Informationen aus, ohne sie absichtlich zu verändern
[TEST]Führt einen aktiven Test aus oder erzeugt zusätzliche Logeinträge
[PRIV]Benötigt möglicherweise Administrator- oder Root-Rechte
[FILE]Erzeugt oder verändert eine Datei
[SENS]Ausgabe kann vertrauliche Daten enthalten
[CHANGE]Verändert Konfiguration, Protokollierung oder Systemzustand
[DISRUPT]Kann Dienste oder Systeme beeinträchtigen

Logs können unter anderem folgende vertrauliche Informationen enthalten:

  • Benutzernamen und E-Mail-Adressen,
  • interne Hostnamen und IP-Adressen,
  • vollständige Datei- und Verzeichnispfade,
  • aufgerufene URLs und Suchbegriffe,
  • Sitzungs- und Korrelations-IDs,
  • Kommandozeilen und Programmparameter,
  • Datenbank- und Servernamen,
  • Inhalte von Anfragen und Antworten,
  • Zugangstoken oder andere Geheimnisse,
  • personenbezogene oder geschäftliche Daten.

Deshalb gilt:

  1. Protokolle nur so umfangreich wie erforderlich erfassen.
  2. Exportierte Logs geschützt speichern.
  3. Zugriff auf autorisierte Personen begrenzen.
  4. Vor externer Weitergabe sensible Inhalte redigieren.
  5. Originaldateien möglichst unverändert sichern.
  6. Arbeitskopien getrennt vom Original anlegen.
  7. Aufbewahrungs- und Löschfristen beachten.
  8. Protokolle niemals unkontrolliert in öffentliche Analysedienste hochladen.
2. Wie wird eine Log-Analyse systematisch begonnen?

Vor dem Öffnen der ersten Protokolldatei sollten mindestens folgende Informationen bekannt sein:

InformationBeispiel
Betroffenes SystemCLIENT-023
Betroffener DienstDNS-Client
Fehlerbeginn2026-07-31 09:42:15 CEST
Letzter bekannter funktionierender Zeitpunkt2026-07-31 09:35 CEST
Betroffener BenutzerMax Mustermann
FehlerbeschreibungInterne Anwendung nicht erreichbar
ReproduzierbarkeitBei jedem Anmeldeversuch
Kürzliche ÄnderungVPN-Client aktualisiert
Zeitzone des meldenden SystemsEurope/Berlin
VergleichssystemCLIENT-024 funktioniert

Empfohlener Analysezeitraum

Der Zeitraum sollte zunächst eng um das Ereignis gelegt werden:

Fehlerzeitpunkt: 09:42 Uhr
Erste Untersuchung: 09:37 bis 09:47 Uhr

Falls dort keine Ursache erkennbar ist, wird das Zeitfenster schrittweise erweitert.

Bewährte Reihenfolge

  1. Uhrzeit und Zeitzone aller beteiligten Systeme prüfen.
  2. Fehler reproduzieren und exakten Zeitpunkt notieren.
  3. Passendes Protokoll bestimmen.
  4. Zeitfenster begrenzen.
  5. Nach Quelle, Dienst, Prozess oder Ereignis-ID filtern.
  6. Das erste relevante Ereignis suchen.
  7. Vorhergehende und nachfolgende Ereignisse betrachten.
  8. Meldungen zwischen beteiligten Systemen zeitlich korrelieren.
  9. Hypothese aufstellen.
  10. Hypothese durch einen kontrollierten Test überprüfen.
3. Welche Informationen eines Logeintrags sind wichtig?
FeldBedeutungPrüffrage
ZeitstempelZeitpunkt des EreignissesWelche Zeitzone wird verwendet?
Hostnamemeldendes SystemIst es wirklich das betroffene System?
Quelle oder Providererzeugende KomponenteWelcher Dienst oder Treiber meldet das Ereignis?
Prozess und PIDbeteiligter ProzessLäuft derselbe Prozess noch?
Benutzer oder UIDSicherheitskontextUnter welchem Konto trat der Fehler auf?
SchweregradEinordnung durch die AnwendungIst Error wirklich die Ursache?
Ereignis-IDtypisierter EreigniscodeIst die ID providerspezifisch?
Nachrichtmenschenlesbare BeschreibungEnthält sie Ursache, Folge oder nur Status?
Fehlercodetechnischer RückgabewertIst der Code dezimal oder hexadezimal?
Korrelations-IDverbindet zusammengehörige VorgängeTaucht dieselbe ID in anderen Logs auf?
Dienst oder Unitbetroffene KomponenteWelche Abhängigkeiten besitzt sie?
Datei und ZeilePosition im ProgrammcodePasst sie zur eingesetzten Version?
DauerLaufzeit einer OperationWo entsteht die Verzögerung?
Remote-Endpunktbeteiligtes ZielsystemWaren DNS, Routing und Port erreichbar?

Eine Ereignis-ID ist normalerweise nur zusammen mit der Quelle eindeutig.

Ereignis-ID 1000 von Quelle A ≠ Ereignis-ID 1000 von Quelle B
4. Wie werden Schweregrade richtig interpretiert?
Allgemeiner SchweregradTypische Bedeutung
Tracesehr detaillierter interner Ablauf
DebugDiagnoseinformationen für Entwicklung und Administration
Informationreguläres Ereignis oder Statusmeldung
Noticebemerkenswertes, aber nicht zwingend fehlerhaftes Ereignis
Warningunerwarteter Zustand; Verarbeitung kann weiterlaufen
ErrorOperation ist fehlgeschlagen
Criticalschwerwiegender Fehler mit deutlicher Beeinträchtigung
Alertunmittelbares Eingreifen erforderlich
EmergencySystem oder Dienst ist nicht mehr verwendbar

Die genaue Bedeutung hängt von der jeweiligen Anwendung ab. Nicht jedes Programm verwendet dieselbe Einteilung.

Wichtige Regeln

  • Eine Warnung ist nicht automatisch die Ursache.
  • Eine Fehlermeldung kann nur die Folge eines früheren Fehlers sein.
  • Eine Informationsmeldung kann den entscheidenden Hinweis enthalten.
  • Debug-Protokollierung kann relevante Informationen liefern, erzeugt aber viel Datenvolumen.
  • Wiederholte Meldungen können auf automatische Wiederholungsversuche hinweisen.
  • Eine erfolgreiche Wiederholung kann einen vorherigen Fehler bereits kompensiert haben.

Beispiel einer Ereigniskette

09:42:10 INFO     DNS-Abfrage gestartet
09:42:15 WARNING  Zeitüberschreitung bei DNS-Server 192.168.10.10
09:42:15 INFO     Zweiter DNS-Server wird verwendet
09:42:16 INFO     Name erfolgreich aufgelöst
09:42:16 ERROR    HTTPS-Verbindung abgelehnt

Hier ist die DNS-Warnung möglicherweise nicht die unmittelbare Ursache, weil die Namensauflösung anschließend erfolgreich war. Die abgelehnte HTTPS-Verbindung muss getrennt untersucht werden.

5. Wie werden Datum, Uhrzeit und Zeitzone geprüft?
AufgabeWindowsLinuxmacOS
Lokale Zeit[RO] Get-Date -Format o[RO] date --iso-8601=seconds[RO] date "+%Y-%m-%dT%H:%M:%S%z"
UTC-Zeit[RO] (Get-Date).ToUniversalTime().ToString("o")[RO] date -u "+%Y-%m-%dT%H:%M:%SZ"[RO] date -u "+%Y-%m-%dT%H:%M:%SZ"
Zeitzone[RO] Get-TimeZone[RO] timedatectl status[RO][PRIV] sudo systemsetup -gettimezone
Zeitquelle[RO] w32tm /query /source[RO] timedatectl timesync-status[TEST] sntp -d time.apple.com
Synchronisationsstatus[RO] w32tm /query /status[RO] timedatectl status[TEST] sntp -d time.apple.com
chrony-StatusNicht zutreffend[RO] chronyc trackingNicht standardmäßig vorhanden
chrony-QuellenNicht zutreffend[RO] chronyc sources -vNicht standardmäßig vorhanden

Warum ist das wichtig?

Bereits wenige Minuten Zeitabweichung können die Zuordnung zwischen folgenden Systemen erschweren:

  • Client und Server,
  • Firewall und Anwendung,
  • Webserver und Datenbank,
  • Hypervisor und virtuelle Maschine,
  • Reverse Proxy und Backend,
  • Identitätsanbieter und Cloudanwendung.

Ein Zeitstempel ohne Zeitzone ist nicht eindeutig.

2026-07-31 14:30:00

Ein Zeitstempel mit Offset ist eindeutig zuordenbar:

2026-07-31T14:30:00+02:00

UTC-Darstellung:

2026-07-31T12:30:00Z
6. Wie werden Windows-Ereignisprotokolle grafisch untersucht?

Die Windows-Ereignisanzeige wird mit folgendem Befehl geöffnet:

[RO] eventvwr.msc

Wichtige Protokollbereiche:

ProtokollTypische Inhalte
AnwendungAnwendungs-, Datenbank- und Laufzeitfehler
SicherheitAnmeldungen, Kontoereignisse und überwachte Zugriffe
SetupInstallation und Systemkonfiguration
SystemTreiber, Dienste, Netzwerk und Betriebssystem
Weitergeleitete Ereignissezentral gesammelte Ereignisse anderer Systeme
Anwendungs- und Dienstprotokollekomponentenspezifische Windows-Protokolle

Empfohlenes Vorgehen

  1. Passendes Protokoll auswählen.
  2. Aktuelles Protokoll filtern verwenden.
  3. Zeitraum auf den Störungszeitraum begrenzen.
  4. Ereignisebene auswählen.
  5. Falls bekannt, Quelle und Ereignis-ID eingeben.
  6. Ereignis in der Detailansicht öffnen.
  7. Allgemeine und XML-Ansicht vergleichen.
  8. Ereignisse unmittelbar davor und danach untersuchen.
  9. Relevante Ereignisse exportieren oder dokumentieren.

Wichtige Felder

  • Protokollname,
  • Quelle beziehungsweise Provider,
  • Ereignis-ID,
  • Ebene,
  • Benutzer,
  • Opcode und Aufgabe,
  • Computername,
  • Zeitstempel,
  • Prozess- und Thread-ID,
  • Ereignisdaten.

Die XML-Ansicht kann Informationen enthalten, die in der allgemeinen Beschreibung nicht vollständig dargestellt werden.

7. Wie werden Windows-Ereignisse mit PowerShell gelesen?

Verfügbare Ereignisprotokolle auflisten

[RO] Get-WinEvent -ListLog * |
    Select-Object LogName, RecordCount, IsEnabled, LogMode, MaximumSizeInBytes

Nur aktivierte Protokolle anzeigen:

[RO] Get-WinEvent -ListLog * |
    Where-Object IsEnabled |
    Sort-Object LogName |
    Select-Object LogName, RecordCount

Neueste Ereignisse des Systemprotokolls

[RO] Get-WinEvent -LogName System -MaxEvents 20

Neueste Ereignisse des Anwendungsprotokolls

[RO] Get-WinEvent -LogName Application -MaxEvents 20

Ereignisse der letzten Stunde

[RO] $Start = (Get-Date).AddHours(-1)

Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    StartTime = $Start
}

Fehler und kritische Ereignisse der letzten 24 Stunden

[RO] $Start = (Get-Date).AddHours(-24)

Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    Level     = 1, 2
    StartTime = $Start
} | Select-Object TimeCreated, Id, LevelDisplayName, ProviderName, Message
LevelWindows-Ebene
1Kritisch
2Fehler
3Warnung
4Information
5Ausführlich

Nach Ereignis-ID filtern

[RO] Get-WinEvent -FilterHashtable @{
    LogName = 'System'
    Id      = 7036
} -MaxEvents 20

Nach Provider filtern

[RO] Get-WinEvent -FilterHashtable @{
    LogName      = 'System'
    ProviderName = 'Service Control Manager'
    StartTime    = (Get-Date).AddHours(-4)
}

Mehrere Ereignis-IDs abfragen

[RO] Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    Id        = 6005, 6006, 6008, 1074
    StartTime = (Get-Date).AddDays(-7)
} | Select-Object TimeCreated, Id, ProviderName, Message

Ergebnis übersichtlich ausgeben

[RO] Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    Level     = 1, 2, 3
    StartTime = (Get-Date).AddHours(-2)
} | Select-Object TimeCreated,
                  Id,
                  LevelDisplayName,
                  ProviderName,
                  MachineName,
                  Message |
    Format-List

Nach Text in der Meldung suchen

[RO] Get-WinEvent -LogName Application -MaxEvents 1000 |
    Where-Object Message -Match 'timeout|Zeitüberschreitung'

Die Filterung mit FilterHashtable erfolgt bereits beim Abruf und ist bei großen Protokollen effizienter als eine nachträgliche Filterung mit Where-Object. Eine Textsuche in der formatierten Nachricht erfordert jedoch häufig eine nachträgliche Auswertung.

8. Wie werden Windows-Ereignisse exportiert und archiviert?

Systemprotokoll als EVTX exportieren

[RO][PRIV][FILE][SENS] wevtutil epl System C:\Temp\System.evtx

Anwendungsprotokoll exportieren

[RO][PRIV][FILE][SENS] wevtutil epl Application C:\Temp\Application.evtx

Ereignisse mit PowerShell als CSV exportieren

[RO][FILE][SENS] $Start = (Get-Date).AddHours(-2)

Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    StartTime = $Start
} |
    Select-Object TimeCreated,
                  Id,
                  LevelDisplayName,
                  ProviderName,
                  MachineName,
                  Message |
    Export-Csv -Path 'C:\Temp\System-Events.csv' -NoTypeInformation -Encoding UTF8

Ereignisse als XML sichern

[RO][FILE][SENS] Get-WinEvent -LogName System -MaxEvents 100 |
    Export-Clixml -Path 'C:\Temp\System-Events.xml'

Verfügbare Protokolle mit wevtutil auflisten

[RO] wevtutil el

Letzte zehn Systemereignisse im Textformat anzeigen

[RO] wevtutil qe System /c:10 /rd:true /f:text
OptionBedeutung
qeEreignisse abfragen
eplProtokoll exportieren
/c:10maximal zehn Ereignisse
/rd:trueneueste Ereignisse zuerst
/f:textTextausgabe
/f:xmlXML-Ausgabe

Protokoll nicht während der Analyse löschen

Der folgende Befehl löscht ein Ereignisprotokoll und darf nicht als regulärer Diagnoseschritt verwendet werden:

[PRIV][CHANGE][DISRUPT] wevtutil cl System

Das Löschen vernichtet möglicherweise entscheidende Beweise und kann gegen betriebliche oder rechtliche Vorgaben verstoßen.

9. Wie werden Linux-Protokolle mit journalctl untersucht?

Bei systemd-basierten Linux-Systemen werden viele Ereignisse im systemd-Journal gespeichert und mit journalctl ausgewertet.

Gesamtes Journal anzeigen

[RO] journalctl

Neueste Einträge zuerst anzeigen

[RO] journalctl -r

Aktuellen Systemstart untersuchen

[RO] journalctl -b

Vorherigen Systemstart untersuchen

[RO] journalctl -b -1

Verfügbare Systemstarts anzeigen

[RO] journalctl --list-boots

Nur Kernelmeldungen anzeigen

[RO] journalctl -k

Kernelmeldungen des aktuellen Starts

[RO] journalctl -k -b

Protokoll eines Dienstes anzeigen

[RO] journalctl -u ssh.service
[RO] journalctl -u nginx.service

Protokoll eines Dienstes live verfolgen

[RO] journalctl -u nginx.service -f

Beenden mit:

Strg+C

Ereignisse seit einem Zeitpunkt

[RO] journalctl --since "2026-07-31 09:30:00"

Zeitfenster eingrenzen

[RO] journalctl \
  --since "2026-07-31 09:30:00" \
  --until "2026-07-31 10:00:00"

Relative Zeitangaben

[RO] journalctl --since "30 minutes ago"
[RO] journalctl --since today

Nach Priorität filtern

[RO] journalctl -p err

Fehler und schwerwiegendere Meldungen des aktuellen Starts:

[RO] journalctl -b -p err

Warnungen und schwerwiegendere Meldungen eines Dienstes:

[RO] journalctl -u nginx.service -p warning
PrioritätNummer
emerg0
alert1
crit2
err3
warning4
notice5
info6
debug7

Mit -p warning werden normalerweise warning und alle schwerwiegenderen Prioritäten angezeigt.

Nach Prozess-ID filtern

[RO] journalctl _PID=4321

Nach ausführbarer Datei filtern

[RO] journalctl _EXE=/usr/sbin/sshd

Nach Benutzer-ID filtern

[RO] journalctl _UID=1000

Ausgabe ohne Pager

[RO] journalctl -u nginx.service --no-pager

ISO-Zeitstempel verwenden

[RO] journalctl -u nginx.service -o short-iso

Ausführliche Felder eines Ereignisses anzeigen

[RO] journalctl -u nginx.service -n 10 -o verbose
10. Wie wird der Status eines Linux-Dienstes einschließlich Logs geprüft?

Dienststatus anzeigen

[RO] systemctl status nginx.service

Ohne interaktiven Pager:

[RO] systemctl status nginx.service --no-pager

Vollständige Zeilen ohne Kürzung:

[RO] systemctl status nginx.service --no-pager --full

Prüfen, ob der Dienst aktiv ist

[RO] systemctl is-active nginx.service

Prüfen, ob der Dienst aktiviert ist

[RO] systemctl is-enabled nginx.service

Fehlgeschlagene Units anzeigen

[RO] systemctl --failed

Journal des Dienstes seit dem aktuellen Start

[RO] journalctl -b -u nginx.service

Wichtige Unterscheidung

BefehlAussage
systemctl is-activeLäuft die Unit aktuell?
systemctl is-enabledIst ein automatischer Start konfiguriert?
systemctl statusStatus, PID und letzte Logmeldungen
journalctl -uausführlicher zeitlicher Verlauf der Unit

Ein Dienst kann aktiviert, aber aktuell nicht aktiv sein. Umgekehrt kann ein manuell gestarteter Dienst aktiv sein, obwohl er nicht für den automatischen Start aktiviert wurde.

11. Wie werden klassische Linux-Protokolldateien gelesen?

Abhängig von Distribution und Dienst befinden sich Textprotokolle häufig unter:

/var/log/

Typische Beispiele:

PfadMöglicher Inhalt
/var/log/syslogallgemeine Systemmeldungen bei Debian/Ubuntu
/var/log/messagesallgemeine Systemmeldungen bei RHEL-artigen Systemen
/var/log/auth.logAuthentifizierungsereignisse bei Debian/Ubuntu
/var/log/secureAuthentifizierungsereignisse bei RHEL-artigen Systemen
/var/log/kern.logKernelmeldungen
/var/log/dmesggespeicherte Boot- und Kernelmeldungen
/var/log/nginx/Nginx-Zugriffs- und Fehlerprotokolle
/var/log/apache2/Apache-Protokolle bei Debian/Ubuntu
/var/log/httpd/Apache-Protokolle bei RHEL-artigen Systemen

Die tatsächlichen Pfade hängen von Distribution, Paket, Konfiguration und Protokollierungsdienst ab. Sie müssen deshalb auf dem konkreten System geprüft werden.

Datei mit less öffnen

[RO] less /var/log/syslog

Nützliche Tasten in less:

TasteFunktion
Gzum Dateiende
gzum Dateianfang
/textvorwärts suchen
?textrückwärts suchen
nnächster Treffer
Nvorheriger Treffer
qbeenden

Letzte Zeilen anzeigen

[RO] tail -n 50 /var/log/syslog

Neue Zeilen live verfolgen

[RO] tail -f /var/log/syslog

Datei auch nach Rotation weiterverfolgen

[RO] tail -F /var/log/nginx/error.log

tail -F versucht im Gegensatz zu tail -f, die Datei nach einer Rotation oder Neuerstellung erneut zu öffnen.

Bestimmten Begriff suchen

[RO] grep -i "error" /var/log/syslog

Mehrere Begriffe suchen

[RO] grep -Ei "error|failed|timeout|denied" /var/log/syslog

Zeilennummern anzeigen

[RO] grep -Ein "error|failed|timeout|denied" /var/log/syslog

Treffer mit Kontext anzeigen

[RO] grep -Ein -B 3 -A 5 "timeout" /var/log/syslog
OptionBedeutung
-iGroß- und Kleinschreibung ignorieren
-Eerweiterte reguläre Ausdrücke
-nZeilennummer anzeigen
-B 3drei Zeilen vor dem Treffer
-A 5fünf Zeilen nach dem Treffer
-C 5fünf Zeilen vor und nach dem Treffer
12. Wie werden rotierte und komprimierte Linux-Logs durchsucht?

Protokolle werden häufig rotiert, damit einzelne Dateien nicht unbegrenzt wachsen.

Beispiel:

auth.log
auth.log.1
auth.log.2.gz
auth.log.3.gz
DateiBedeutung
auth.logaktuelles Protokoll
auth.log.1vorherige unkomprimierte Generation
auth.log.2.gzältere komprimierte Generation

Komprimiertes Protokoll anzeigen

[RO] zless /var/log/auth.log.2.gz

Komprimiertes Protokoll durchsuchen

[RO] zgrep -i "failed" /var/log/auth.log.2.gz

Mehrere rotierte Dateien durchsuchen

[RO] zgrep -Ei "failed|denied|timeout" /var/log/auth.log.*.gz

Aktuelle und ältere unkomprimierte Dateien durchsuchen:

[RO] grep -Ei "failed|denied|timeout" /var/log/auth.log /var/log/auth.log.1

Vor einer Analyse sollte geprüft werden, ob der Störungszeitpunkt bereits in einer rotierten Datei liegt.

13. Wie werden Kernel- und Hardwaremeldungen unter Linux geprüft?

Kernelmeldungen aus dem Journal

[RO] journalctl -k -b

Klassische dmesg-Ausgabe

[RO][PRIV] sudo dmesg

Menschenlesbare Zeitstempel:

[RO][PRIV] sudo dmesg --human

Nur Warnungen und Fehler anzeigen:

[RO][PRIV] sudo dmesg --level=warn,err,crit,alert,emerg

Nach typischen Hardware- und Netzwerkproblemen suchen:

[RO][PRIV] sudo dmesg --human |
    grep -Ei "error|failed|timeout|reset|link.*down|I/O"

Typische Hinweise:

MeldungMögliche Untersuchungsrichtung
I/O errorDatenträger, Kabel, Controller oder Dateisystem
link downNetzwerkkabel, Switchport, Treiber oder Interface
resetGerät, Bus, Treiber oder Stromversorgung
out of memorySpeicherdruck und OOM-Killer
segfaultProgrammfehler, Bibliothek oder Speicherproblem
read-only filesystemDateisystemfehler oder Schutzreaktion
firmware failed to loadfehlende oder inkompatible Firmware

Eine Meldung beschreibt zunächst nur eine Beobachtung. Beispielsweise kann ein link down durch das bewusste Abziehen eines Kabels entstanden sein.

14. Wie werden macOS-Protokolle mit der Konsole untersucht?

Die App Konsole zeigt unter anderem:

  • Live-Protokollmeldungen,
  • System- und Anwendungsaktivitäten,
  • Absturzberichte,
  • Diagnoseberichte,
  • Spin- und Hang-Berichte,
  • Systemberichte.

Öffnen über Spotlight:

Konsole

Oder über das Terminal:

[RO] open -a Console

Empfohlenes Vorgehen

  1. In der Seitenleiste den lokalen Mac auswählen.
  2. Live-Anzeige nur für einen kurzen Zeitraum aktivieren.
  3. Suchfeld nach Prozess, Subsystem, Kategorie oder Meldung filtern.
  4. Fehler einmal reproduzieren.
  5. Live-Anzeige wieder anhalten.
  6. Ereignisse unmittelbar vor und nach dem Fehler untersuchen.
  7. Detailbereich des Ereignisses öffnen.
  8. Prozess, Subsystem, Kategorie und Zeitstempel dokumentieren.

Abhängig von Benutzerrechten und Systemeinstellungen sind nicht alle Meldungen sichtbar. Für bestimmte Protokolle kann eine administrative Authentifizierung erforderlich sein.

15. Wie werden macOS-Protokolle mit log show ausgewertet?

macOS verwendet das Unified Logging System. Historische Ereignisse werden mit log show untersucht.

Letzte zehn Minuten anzeigen

[RO] log show --last 10m

Letzte Stunde anzeigen

[RO] log show --last 1h

Kompakte Darstellung

[RO] log show --last 10m --style compact

Nach Prozess filtern

[RO] log show \
  --last 30m \
  --style compact \
  --predicate 'process == "Safari"'

Nach Subsystem filtern

[RO] log show \
  --last 30m \
  --style compact \
  --predicate 'subsystem == "com.apple.network"'

Das konkrete Subsystem muss zuvor aus einem passenden Ereignis ermittelt werden. Es darf nicht allein anhand des Produktnamens angenommen werden.

Nach Text in der Ereignismeldung suchen

[RO] log show \
  --last 30m \
  --style compact \
  --predicate 'eventMessage CONTAINS[c] "error"'

Mehrere Bedingungen kombinieren

[RO] log show \
  --last 30m \
  --style compact \
  --predicate 'process == "Safari" AND eventMessage CONTAINS[c] "network"'

Informations- und Debugmeldungen einbeziehen

[RO] log show \
  --last 10m \
  --info \
  --debug \
  --style compact

Debugmeldungen können sehr umfangreich sein. Das Zeitfenster sollte deshalb möglichst klein gewählt werden.

Bestimmtes Zeitfenster untersuchen

[RO] log show \
  --start '2026-07-31 09:30:00' \
  --end '2026-07-31 09:45:00' \
  --style compact

Datumsformat, Zeitzone und unterstützte Optionen sollten auf der eingesetzten macOS-Version mit man log beziehungsweise log help show geprüft werden.

16. Wie werden macOS-Protokolle live verfolgt?

Live-Ausgabe starten

[RO] log stream

Kompakte Live-Ausgabe

[RO] log stream --style compact

Bestimmten Prozess verfolgen

[RO] log stream \
  --style compact \
  --predicate 'process == "Safari"'

Nach Meldungsinhalt filtern

[RO] log stream \
  --style compact \
  --predicate 'eventMessage CONTAINS[c] "timeout"'

Informationsmeldungen einbeziehen

[RO] log stream --info --style compact

Beenden mit:

Strg+C

Sicherer Ablauf

  1. Filter vorbereiten.
  2. Live-Aufzeichnung starten.
  3. Problem genau einmal reproduzieren.
  4. Aufzeichnung sofort beenden.
  5. Zeitstempel und relevante Ereignisse dokumentieren.

Eine ungefilterte Live-Ausgabe kann sehr schnell unübersichtlich werden.

17. Wie werden Docker-Containerlogs untersucht?

Docker schreibt standardmäßig die Standardausgabe und Standardfehlerausgabe eines Containers in den konfigurierten Logging-Treiber. Die tatsächlich verfügbaren Logs hängen deshalb von Container, Anwendung und Logging-Konfiguration ab.

Laufende Container anzeigen

[RO] docker ps

Auch beendete Container anzeigen:

[RO] docker ps -a

Logs eines Containers anzeigen

[RO][SENS] docker logs beispiel-container

Letzte 100 Zeilen anzeigen

[RO][SENS] docker logs --tail 100 beispiel-container

Zeitstempel einblenden

[RO][SENS] docker logs --timestamps --tail 100 beispiel-container

Logs live verfolgen

[RO][SENS] docker logs --follow --tail 100 beispiel-container

Logs seit einem relativen Zeitpunkt

[RO][SENS] docker logs --since 30m beispiel-container

Logs seit einem absoluten Zeitpunkt

[RO][SENS] docker logs \
  --since "2026-07-31T09:30:00+02:00" \
  beispiel-container

Zeitfenster begrenzen

[RO][SENS] docker logs \
  --since "2026-07-31T09:30:00+02:00" \
  --until "2026-07-31T09:45:00+02:00" \
  --timestamps \
  beispiel-container

Docker-Compose-Dienste anzeigen

[RO] docker compose ps

Logs eines Compose-Dienstes

[RO][SENS] docker compose logs --tail 100 beispiel-dienst

Compose-Logs live verfolgen

[RO][SENS] docker compose logs --follow --tail 100 beispiel-dienst

Wichtige Grenzen

  • Nicht jede Anwendung schreibt alle Fehler nach stdout oder stderr.
  • Ein Container kann zusätzlich interne Logdateien verwenden.
  • Ein nicht mehr vorhandener Container kann auch nicht mehr direkt mit docker logs abgefragt werden.
  • Logrotation und Logging-Treiber beeinflussen die Verfügbarkeit.
  • Das Fehlen einer Meldung beweist nicht, dass kein Fehler aufgetreten ist.
18. Wie werden Webserver- und Reverse-Proxy-Logs interpretiert?

Webserver führen häufig mindestens zwei getrennte Protokolle:

ProtokollInhalt
Access Logeingegangene HTTP-Anfragen und Antwortstatus
Error Loginterne Fehler, Verbindungsprobleme und Konfigurationshinweise

Typischer Access-Log-Eintrag:

192.0.2.50 - - [31/Jul/2026:09:42:15 +0200] "GET /login HTTP/1.1" 502 157
BestandteilBedeutung
192.0.2.50Client-IP-Adresse
ZeitstempelZeitpunkt und Zeitzone
GETHTTP-Methode
/loginangeforderter Pfad
HTTP/1.1Protokollversion
502HTTP-Statuscode
157übertragene Antwortgröße, abhängig vom Logformat

Wichtige HTTP-Statusgruppen

BereichBedeutung
1xxInformation
2xxerfolgreiche Verarbeitung
3xxUmleitung
4xxAnfrage konnte aus Clientsicht nicht verarbeitet werden
5xxserverseitige Verarbeitung fehlgeschlagen

Typische Statuscodes:

StatusBedeutungUntersuchungsrichtung
200Anfrage erfolgreichInhalt und Antwortzeit prüfen
301/302UmleitungZiel und Weiterleitungskette prüfen
400ungültige AnfrageHeader, Syntax und Proxy prüfen
401Authentifizierung erforderlich oder fehlgeschlagenAnmeldedaten und Authentifizierungsdienst
403Zugriff verweigertBerechtigungen und Regeln
404Ressource nicht gefundenPfad, Routing und Deployment
429zu viele AnfragenRate-Limit und Last
500interner ServerfehlerAnwendungslog prüfen
502ungültige Antwort vom BackendBackend-Erreichbarkeit und Proxy
503Dienst nicht verfügbarDienststatus, Wartung und Kapazität
504Zeitüberschreitung zum BackendBackend-Laufzeit, Netzwerk und Timeout

Ein 502 wird häufig am Reverse Proxy sichtbar, obwohl die eigentliche Ursache im Backenddienst liegt. Deshalb müssen Proxy- und Backend-Logs über Zeitstempel, Pfad und Korrelations-ID verbunden werden.

19. Wie werden Authentifizierungsfehler untersucht?

Bei Anmeldeproblemen können mehrere Systeme beteiligt sein:

Client
  → Anwendung
    → Reverse Proxy
      → Identitätsanbieter
        → Verzeichnisdienst
          → MFA-Dienst

Zu erfassende Informationen

  • exakter Zeitpunkt,
  • Benutzerkennung,
  • Client und Quell-IP,
  • Zielanwendung,
  • Authentifizierungsverfahren,
  • verwendeter Identitätsanbieter,
  • Korrelations- oder Request-ID,
  • Fehlercode,
  • Ergebnis einer Vergleichsanmeldung,
  • mögliche Uhrzeitabweichung.

Typische Ursachen

BeobachtungMögliche Untersuchungsrichtung
Benutzer unbekanntfalscher Mandant, falsche Domäne oder Synchronisation
Kennwort abgelehntfalsches Kennwort, Kontosperre oder abgelaufenes Kennwort
Token abgelaufenZeitabweichung oder zu lange Sitzung
Zertifikat ungültigAblaufdatum, Vertrauenskette oder Hostname
MFA fehlgeschlagenEndgerät, Push-Dienst oder Richtlinie
Zugriff verweigertRolle, Gruppe oder Conditional-Access-Regel
LDAP nicht erreichbarDNS, Routing, Port, TLS oder Dienststatus
Wiederholte Fehlversuchegespeicherte alte Zugangsdaten oder automatischer Dienst

Authentifizierungsprotokolle enthalten besonders schützenswerte Informationen. Kennwörter, Tokens oder Cookies dürfen nicht in die Dokumentation kopiert werden.

20. Wie werden Meldungen verschiedener Systeme miteinander korreliert?

Beispiel einer verteilten Anfrage

09:42:15.120 Client sendet Anfrage
09:42:15.145 Reverse Proxy nimmt Anfrage an
09:42:15.151 Backend beginnt Verarbeitung
09:42:20.152 Backend meldet Datenbank-Timeout
09:42:20.153 Reverse Proxy erhält keine gültige Antwort
09:42:20.154 Client erhält HTTP 504

Der 504-Fehler auf dem Client ist hier eine Folge. Der erste technisch relevante Fehler ist der Datenbank-Timeout im Backend.

Geeignete Korrelationsmerkmale

MerkmalNutzen
Zeitstempelgrobe zeitliche Zuordnung
Request-IDeindeutige Anfrageverfolgung
Trace-IDverteilte Ablaufverfolgung
Session-IDZuordnung zu einer Sitzung
Benutzer-IDZuordnung zu einem Konto
Quell-IPZuordnung zu einem Client
ZielpfadZuordnung zu einer Funktion
Prozess-IDZuordnung zu einem lokalen Prozess
Transaktions-IDZuordnung zu einem Geschäftsvorgang

Korrelationsregel

Gleiche Uhrzeit allein ist kein Beweis für denselben Vorgang.

Je mehr Merkmale übereinstimmen, desto belastbarer ist die Zuordnung.

21. Wie wird nach Fehlercodes und Meldungen gesucht?

Vor der Internetrecherche sollten folgende Angaben vollständig erfasst werden:

  • Produktname,
  • Produktversion,
  • Betriebssystemversion,
  • Provider oder Quelle,
  • Ereignis-ID,
  • vollständiger Fehlercode,
  • genaue Fehlermeldung,
  • betroffene Funktion,
  • Zeitpunkt und Kontext.

Gute Suchanfrage

Microsoft-Windows-DNS-Client Event ID 1014 Windows 11

Ungenaue Suchanfrage

Internet geht nicht Fehler

Quellenreihenfolge

  1. offizielle Herstellerdokumentation,
  2. offizielle Knowledge Base oder Supportartikel,
  3. offizielle Quellcode-Repositories und Issue-Tracker,
  4. Dokumentation des eingesetzten Projekts,
  5. seriöse Fachquellen,
  6. Community-Beiträge als ergänzende Hinweise.

Ein Community-Beitrag kann eine nützliche Hypothese liefern, ersetzt aber keine Prüfung am eigenen System.

22. Welche typischen Fehler werden bei der Log-Analyse gemacht?
FehlerFolgeBesseres Vorgehen
Nur nach dem Wort error suchenrelevante Warnungen und Statusmeldungen fehlenDienst, Zeitfenster und Ereigniskette prüfen
Nur das letzte Ereignis betrachtenursprüngliche Ursache wird übersehenzeitlich rückwärts zum ersten relevanten Fehler gehen
Zeitzonen ignorierenEreignisse werden falsch zugeordnetZeit und UTC-Offset dokumentieren
Gesamtes Log ungefiltert lesenrelevante Ereignisse gehen in der Menge unterZeitfenster und Quelle begrenzen
Logs vor Sicherung löschenBeweise gehen verlorenzuerst exportieren und Integrität sichern
Debug-Logging dauerhaft aktivierenSpeicherplatz- und Datenschutzproblemekurzzeitig aktivieren und danach zurücksetzen
Fehlermeldung isoliert suchenfalsche Produkt- oder VersionslösungQuelle, Version und Kontext ergänzen
Nur ein System prüfenverteilte Ursache bleibt verborgenalle beteiligten Systeme korrelieren
Fehlerhäufigkeit nicht beachtenEinzelereignis wird überbewertetHäufigkeit und Vergleichswerte prüfen
Geheimnisse in Tickets kopierenSicherheitsvorfall möglichDaten vor Weitergabe redigieren
Logdatei während der Analyse verändernBeweiskraft sinktOriginal sichern und Arbeitskopie verwenden
Nur Fehlermeldungen berücksichtigenerfolgreicher Fallback wird übersehengesamte Ereigniskette betrachten
23. Wie wird eine aussagekräftige Ereigniskette erstellt?

Eine gute Ereigniskette enthält nicht sämtliche Logzeilen, sondern die für den Vorgang relevanten Ereignisse.

ZeitSystemQuelleEreignisBedeutung
09:42:10.100CLIENT-023AnwendungAnfrage gestartetBenutzeraktion beginnt
09:42:10.130PROXY-01NginxAnfrage angenommenProxy ist erreichbar
09:42:10.150APP-01BackendDB-Abfrage gestartetBackend verarbeitet Anfrage
09:42:15.151APP-01BackendDB-Timeouterster belegter Fehler
09:42:15.152PROXY-01NginxUpstream timeoutFolgefehler
09:42:15.160CLIENT-023AnwendungHTTP 504sichtbare Auswirkung

Auswertung

Symptom:
Client erhält HTTP 504.

Erster belegter Fehler:
Datenbank-Timeout auf APP-01.

Folgefehler:
Reverse Proxy erhält keine rechtzeitige Backend-Antwort.

Nächster Prüfschritt:
Datenbankerreichbarkeit, Datenbanklast und Abfragedauer im Zeitraum
09:42:10 bis 09:42:15 untersuchen.
24. Kompakte Befehlsübersicht für Windows, Linux und macOS
AufgabeWindowsLinuxmacOS
Grafische Loganzeige öffnen[RO] eventvwr.mscabhängig von Desktop und Distribution[RO] open -a Console
Neueste Systemereignisse[RO] Get-WinEvent -LogName System -MaxEvents 20[RO] journalctl -n 20[RO] log show --last 10m --style compact
Aktuellen Start untersuchenEreignis-IDs und Startzeit filtern[RO] journalctl -b[RO] log show --last boot --style compact
Vorherigen Start untersuchenSystemprotokoll nach vorherigem Startzeitraum filtern[RO] journalctl -b -1über Zeitfenster beziehungsweise Logarchiv
KernelmeldungenSystemprotokoll und providerspezifische Logs[RO] journalctl -k -b[RO] log show --last 1h --predicate 'process == "kernel"'
Letzte StundeGet-WinEvent mit StartTime=(Get-Date).AddHours(-1)[RO] journalctl --since "1 hour ago"[RO] log show --last 1h
Dienstprotokollnach Provider oder Dienstprotokoll filtern[RO] journalctl -u nginx.servicenach process oder subsystem filtern
Live-AnzeigeEreignisanzeige oder providerspezifisch[RO] journalctl -f[RO] log stream --style compact
Fehler filternGet-WinEvent mit Level=1,2[RO] journalctl -p errPredicate nach Prozess, Typ oder Meldung
Textdatei lesen[RO] Get-Content .\app.log[RO] less /var/log/app.log[RO] less /Pfad/app.log
Letzte 50 Zeilen[RO] Get-Content .\app.log -Tail 50[RO] tail -n 50 /var/log/app.log[RO] tail -n 50 /Pfad/app.log
Datei live verfolgen[RO] Get-Content .\app.log -Wait -Tail 50[RO] tail -F /var/log/app.log[RO] tail -F /Pfad/app.log
Text suchen[RO] Select-String -Path .\app.log -Pattern 'error'[RO] grep -i 'error' /var/log/app.log[RO] grep -i 'error' /Pfad/app.log
Komprimiertes Log lesenabhängig vom Archivformat[RO] zless /var/log/app.log.2.gz[RO] gzcat /Pfad/app.log.gz | less
Ereignisse exportieren[FILE][SENS] wevtutil epl System C:\Temp\System.evtx[FILE][SENS] journalctl --since today > journal.txt[FILE][SENS] log show --last 1h > macos-log.txt
Containerlogs[RO][SENS] docker logs --tail 100 NAME[RO][SENS] docker logs --tail 100 NAME[RO][SENS] docker logs --tail 100 NAME

log show --last boot kann je nach eingesetzter macOS-Version beziehungsweise Werkzeugsyntax nicht verfügbar sein. Die lokal unterstützten Optionen sind mit log help show zu prüfen. Ein festes Zeitfenster mit --start und --end ist die eindeutigere Alternative.

25. Dokumentationsvorlage für eine Log-Analyse
Ticketnummer:
Analysedatum:
Betroffenes System:
Betriebssystem:
Anwendung oder Dienst:
Anwendungsversion:
Betroffener Benutzer:
Fehlerbeschreibung:
Fehlerzeitpunkt:
Zeitzone:
Letzter funktionierender Zeitpunkt:
Reproduzierbar: Ja / Nein

Untersuchte Protokolle:
- 
- 
- 

Verwendete Filter:
- Zeitraum:
- Quelle/Provider:
- Ereignis-ID:
- Prozess/PID:
- Dienst/Unit:
- Benutzer/UID:
- Korrelations-ID:
- Suchbegriffe:

Erster relevanter Fehler:
Zeitpunkt:
System:
Quelle:
Ereignis-ID oder Fehlercode:
Vollständige Meldung:

Vorhergehende Ereignisse:
- 
- 
- 

Nachfolgende Ereignisse:
- 
- 
- 

Ereigniskette:
1.
2.
3.
4.

Arbeitshypothese:
Begründung:
Kontrollierter Test:
Testergebnis:

Ermittelte Ursache:
Durchgeführte Änderung:
Rückweg:
Abschlussprüfung:

Gesicherte Dateien:
- EVTX:
- Journal:
- Textlog:
- CSV:
- Diagnosearchiv:

Original unverändert gesichert: Ja / Nein
Sensible Daten redigiert: Ja / Nein
Speicherort:
Zugriffsberechtigung:
Aufbewahrungs- oder Löschfrist:
26. Offizielle Quellen und weiterführende Dokumentation

Microsoft

Linux und systemd

Apple

Docker

Befehlsoptionen, Protokollpfade und verfügbare Felder können von Betriebssystem-, Distributions- und Anwendungsversion abhängen. Vor dem produktiven Einsatz ist deshalb zusätzlich die lokale Hilfeseite des konkreten Systems zu prüfen.