Skip to main content

9.1 Logs, Monitoring und Fehlersuche

Logs und Monitoring sind zentrale Werkzeuge, um Linux-Systeme zu überwachen, Fehler zu finden und Sicherheitsereignisse nachzuvollziehen.

Unter Linux werden viele Ereignisse protokolliert:

- Systemstarts
- Dienststarts
- Fehler
- Warnungen
- Anmeldungen
- SSH-Zugriffe
- Kernelmeldungen
- Paketinstallationen
- Netzwerkprobleme
- Sicherheitsereignisse

Für Fachinformatiker Systemintegration ist dieses Thema besonders wichtig, weil man im Serverbetrieb nicht nur Befehle ausführt, sondern Probleme gezielt anhand von Logs, Messwerten und Statusinformationen eingrenzen muss.

Merksatz:

Gute Fehlersuche basiert auf Logs,
Messwerten
und systematischer Eingrenzung.

Lernziele

Nach dieser Seite solltest du erklären können:

- was Logs sind
- wo Linux-Logs häufig liegen
- was journalctl macht
- was /var/log enthält
- wie man Dienstlogs prüft
- wie man aktuelle Logeinträge live mitliest
- wie man CPU,
  RAM,
  Speicher
  und Prozesse prüft
- wie man typische Fehlerbilder systematisch eingrenzt
- warum Monitoring wichtig ist
- was Alerting bedeutet

Grundidee

Logs sind Protokolle von Ereignissen.

Sie helfen bei Fragen wie:

- Warum startet ein Dienst nicht?
- Warum schlägt eine Anmeldung fehl?
- Warum ist ein Server langsam?
- Warum ist Speicher voll?
- Warum wird eine Verbindung blockiert?
- Wann trat der Fehler erstmals auf?
- Welcher Benutzer war beteiligt?
- Welche Meldung schreibt der Dienst?

Merksatz:

Logs beantworten oft:
was,
wann,
wo
und warum etwas passiert ist.

Typische Logquellen

Quelle Bedeutung
systemd-Journal zentrale systemd-Logs
/var/log klassische Logdateien
Dienstlogs Logs einzelner Anwendungen
Kernelmeldungen Hardware, Treiber, Kernel
Authentifizierungslogs Login, sudo, SSH
Paketmanager-Logs Installationen und Updates
Webserver-Logs HTTP-Zugriffe und Fehler
Firewall-Logs erlaubter oder blockierter Verkehr
Anwendungslogs Fehler und Ereignisse von Anwendungen

Merksatz:

Nicht alle Logs liegen an derselben Stelle.

/var/log

Viele klassische Logdateien liegen unter:

/var/log

Beispiele:

Pfad Bedeutung
/var/log/syslog allgemeine Systemmeldungen, häufig Debian/Ubuntu
/var/log/messages allgemeine Systemmeldungen, häufig RHEL/Fedora-Umfeld
/var/log/auth.log Authentifizierung, häufig Debian/Ubuntu
/var/log/secure Authentifizierung, häufig RHEL/Fedora-Umfeld
/var/log/kern.log Kernelmeldungen, je nach Distribution
/var/log/dmesg Boot- und Kernelmeldungen, je nach Distribution
/var/log/nginx Nginx-Logs
/var/log/apache2 Apache-Logs
/var/log/apt apt-Logs
/var/log/journal dauerhaftes systemd-Journal, falls aktiviert

Wichtig:

Welche Dateien vorhanden sind,
hängt von Distribution,
Diensten
und Logging-Konfiguration ab.

Merksatz:

/var/log ist der klassische Ort für Logdateien.

systemd-Journal

Auf vielen modernen Linux-Systemen sammelt systemd Logs im Journal.

Das Journal enthält unter anderem:

- Systemmeldungen
- Dienstmeldungen
- Bootmeldungen
- Fehler
- Warnungen
- Logs einzelner Units

Auswertung mit:

journalctl

Merksatz:

journalctl liest das systemd-Journal.

journalctl Grundlagen

Alle Journal-Einträge anzeigen:

journalctl

Letzte Einträge anzeigen:

journalctl -n 50

Live mitlesen:

journalctl -f

Logs seit letztem Boot:

journalctl -b

Logs eines Dienstes:

journalctl -u ssh

Live-Logs eines Dienstes:

journalctl -u ssh -f

Merksatz:

journalctl ist eines der wichtigsten Werkzeuge für Linux-Fehlersuche.

Dienstlogs mit journalctl

Wenn ein Dienst Probleme macht, prüft man zuerst:

systemctl status dienstname

Dann:

journalctl -u dienstname

Beispiel:

systemctl status nginx

journalctl -u nginx

Nur letzte Einträge:

journalctl -u nginx -n 50

Live mitlesen:

journalctl -u nginx -f

Seit letztem Boot:

journalctl -u nginx -b

Merksatz:

Dienstproblem:
status prüfen,
dann journalctl -u.

Zeitfilter bei journalctl

journalctl kann nach Zeit filtern.

Beispiele:

journalctl --since "1 hour ago"

journalctl --since "today"

journalctl --since "2026-07-08 10:00"

journalctl --until "2026-07-08 12:00"

Kombiniert mit Dienst:

journalctl -u ssh --since "today"

Merksatz:

Zeitfilter helfen,
Fehler auf einen Zeitraum einzugrenzen.

Prioritäten bei journalctl

Logs haben Prioritäten.

Nur Fehler anzeigen:

journalctl -p err

Warnungen und Schlimmeres anzeigen:

journalctl -p warning

Häufige Prioritäten:

Priorität Bedeutung
emerg System unbenutzbar
alert sofortiges Eingreifen nötig
crit kritischer Fehler
err Fehler
warning Warnung
notice Hinweis
info Information
debug Debug-Ausgabe

Merksatz:

journalctl -p err zeigt Fehler.

dmesg

dmesg zeigt Kernelmeldungen.

Befehl:

dmesg

Menschenlesbare Zeitstempel:

dmesg -T

Typische Inhalte:

- Hardwareerkennung
- Treiberprobleme
- USB-Geräte
- Festplattenfehler
- Kernelwarnungen
- Netzwerkadapter
- Dateisystemfehler

Merksatz:

dmesg hilft bei Kernel-,
Hardware-
und Treiberproblemen.

Logdateien mit less lesen

Lange Logdateien liest man besser mit less.

Beispiel:

less /var/log/syslog

In less suchen:

/error

Nächster Treffer:

n

Verlassen:

q

Merksatz:

less ist besser als cat für lange Logs.

Logdateien live mitlesen

Mit tail kann man neue Logeinträge live verfolgen.

Beispiel:

tail -f /var/log/syslog

Letzte 100 Zeilen und live weiter:

tail -n 100 -f /var/log/syslog

Typische Nutzung:

Dienst neu starten

gleichzeitig Logs beobachten

Fehler direkt sehen

Merksatz:

tail -f liest neue Logeinträge live mit.

grep in Logs

Mit grep sucht man gezielt nach Begriffen.

Beispiele:

grep -i "error" /var/log/syslog

grep -i "failed" /var/log/auth.log

grep -i "denied" /var/log/auth.log

Mit Zeilennummer:

grep -n "error" datei.log

Groß-/Kleinschreibung ignorieren:

grep -i "error" datei.log

Merksatz:

grep filtert relevante Logzeilen.

Typische Suchbegriffe in Logs

Suchbegriff Mögliche Bedeutung
error Fehler
failed fehlgeschlagen
denied verweigert
refused abgelehnt
timeout Zeitüberschreitung
not found nicht gefunden
permission Rechteproblem
authentication Anmeldung
invalid ungültig
disconnect Verbindung getrennt
no space Speicherproblem
read-only nur lesbares Dateisystem

Merksatz:

Gute Suchbegriffe beschleunigen Logauswertung.

Logrotation

Logs wachsen mit der Zeit.

Damit sie nicht unbegrenzt Speicher verbrauchen, werden sie rotiert.

Logrotation bedeutet:

alte Logs werden umbenannt,
komprimiert,
gelöscht
oder archiviert.

Typisches Werkzeug:

logrotate

Beispielhafte rotierte Dateien:

syslog

syslog.1

syslog.2.gz

Merksatz:

Logrotation verhindert,
dass Logs den Speicher füllen.

Warum Logs Speicher füllen können

Logs können sehr groß werden, wenn:

ein Dienst ständig Fehler schreibt

Debug-Logging aktiviert ist

Angriffe viele Einträge erzeugen

Logrotation nicht funktioniert

ein Dienst in einer Fehlerschleife hängt

Folgen:

Dateisystem voll

Dienste können nicht schreiben

Updates schlagen fehl

System wird instabil

Prüfen:

df -h

du -sh /var/log

Merksatz:

Viele Logs können Ursache und Folge eines Problems sein.

Monitoring

Monitoring bedeutet:

Systeme,
Dienste
Ressourcen
und Zustände regelmäßig überwachen.

Überwacht werden zum Beispiel:

- CPU
- RAM
- Speicherplatz
- Inodes
- Netzwerk
- Dienste
- Ports
- Antwortzeiten
- Backups
- Zertifikate
- Logs
- Sicherheitsereignisse

Merksatz:

Monitoring soll Probleme erkennen,
bevor Benutzer sie melden.

Alerting

Alerting bedeutet:

Bei bestimmten Ereignissen oder Grenzwerten wird eine Benachrichtigung ausgelöst.

Beispiele:

Speicher über 90 Prozent

Backup fehlgeschlagen

Dienst nicht erreichbar

Zertifikat läuft bald ab

CPU dauerhaft sehr hoch

viele fehlgeschlagene Logins

Wichtig:

Alarme müssen sinnvoll sein.
Zu viele unwichtige Alarme führen zu Alarmmüdigkeit.

Merksatz:

Alerting macht aus Monitoring eine aktive Warnung.

Wichtige Systemwerte

Wert Warum wichtig?
CPU hohe Last kann Dienste verlangsamen
RAM Speichermangel führt zu Swap oder Fehlern
Swap starke Nutzung kann System verlangsamen
Speicherplatz volle Dateisysteme verhindern Schreibzugriffe
Inodes zu viele Dateien verhindern neue Dateien
Load Average zeigt Systemlast
Netzwerk Verbindungsprobleme oder Paketverlust
Dienststatus zeigt, ob Dienste laufen
Logs zeigen Ursachen und Fehler

Merksatz:

Langsame Systeme brauchen Messwerte,
keine Vermutungen.

CPU und Prozesse prüfen

Prozesse und CPU prüfen mit:

top

oder:

htop

Prozesse anzeigen:

ps aux

Nach Prozess suchen:

ps aux | grep nginx

Mögliche Ursachen hoher CPU:

hohe Nutzerlast

Endlosschleife

fehlerhafter Prozess

Angriff

falsche Konfiguration

Merksatz:

Hohe CPU immer pro Prozess einordnen.

RAM und Swap prüfen

RAM prüfen:

free -h

Live prüfen:

top

Swap prüfen:

swapon --show

Mögliche Fehlerbilder:

System langsam

Prozesse werden beendet

starke Swap-Nutzung

Dienst startet nicht

Out-of-Memory-Ereignis

Merksatz:

Swap ist langsamer als RAM.
Viel Swap kann System stark verlangsamen.

Out of Memory

Wenn der Arbeitsspeicher knapp wird, kann Linux Prozesse beenden, um das System zu stabilisieren.

Das nennt man häufig:

OOM

oder:

Out of Memory

Suchen in Logs:

journalctl -k | grep -i "out of memory"

dmesg -T | grep -i "killed process"

Merksatz:

Wenn Prozesse plötzlich verschwinden,
OOM in Kernelmeldungen prüfen.

Speicherplatz prüfen

Dateisysteme prüfen:

df -h

Inodes prüfen:

df -i

Große Ordner prüfen:

du -sh /var/log

du -sh /var/lib

du -sh /home/*

Typische Ursachen:

Logs

Backups

Datenbanken

Container-Images

Cache

temporäre Dateien

Merksatz:

No space left on device:
df -h und df -i prüfen.

Netzwerk prüfen

IP-Adressen:

ip addr

Routen:

ip route

Gateway testen:

ping -c 4 gateway-ip

DNS prüfen:

dig example.com

Ports prüfen:

ss -tulpen

Webdienst prüfen:

curl -I http://localhost

Merksatz:

Netzwerkfehler Schritt für Schritt prüfen:
IP,
Route,
DNS,
Port,
Dienst.

Dienststatus prüfen

Dienststatus:

systemctl status dienstname

Autostart prüfen:

systemctl is-enabled dienstname

Aktiv prüfen:

systemctl is-active dienstname

Logs prüfen:

journalctl -u dienstname

Merksatz:

Dienstfehler:
systemctl status
und journalctl -u.

HTTP-Fehler einordnen

Code Bedeutung Wahrscheinliche Richtung
200 OK Dienst antwortet
301 / 302 Weiterleitung Webserver oder Anwendung
401 nicht authentifiziert Login fehlt oder falsch
403 verboten Rechteproblem
404 nicht gefunden Pfad oder Ressource falsch
500 interner Serverfehler Anwendung oder Backend
502 Bad Gateway Proxy erreicht Backend nicht
503 Dienst nicht verfügbar Backend oder Dienst nicht bereit

Merksatz:

HTTP-Code zeigt,
auf welcher Ebene man weiter suchen sollte.

Fehlersuche nach Änderung

Wenn ein Fehler direkt nach einer Änderung auftritt, ist diese Änderung besonders relevant.

Mögliche Änderungen:

Update

Konfigurationsänderung

Firewall-Regel

Rechteänderung

Zertifikatswechsel

Mountänderung

DNS-Änderung

Neustart

Sinnvolle Fragen:

Was wurde geändert?

Wann wurde geändert?

Wer hat geändert?

Gibt es ein Backup?

Gibt es einen Rollback-Plan?

Merksatz:

Fehler nach Änderung:
Änderung zuerst prüfen.

Systematische Fehlersuche

Eine gute Reihenfolge:

1. Fehler genau beschreiben

2. Zeitpunkt feststellen

3. betroffene Systeme eingrenzen

4. letzte Änderungen prüfen

5. Status prüfen

6. Logs prüfen

7. Ressourcen prüfen

8. Netzwerk prüfen

9. Berechtigungen prüfen

10. Maßnahme testen und dokumentieren

Merksatz:

Nicht raten,
sondern eingrenzen.

Einzelnes System oder viele Systeme?

Wichtige Eingrenzung:

Betroffen Wahrscheinliche Richtung
ein Benutzer Benutzerrechte, Client, Konto
alle Benutzer Dienst, Server, Netzwerk, Authentifizierung
ein Server Dienst, Ressourcen, lokale Konfiguration
alle Server Netzwerk, DNS, zentrale Dienste
eine Anwendung Anwendung, Datenbank, Backend
mehrere Anwendungen Infrastruktur, DNS, Storage, Netzwerk

Merksatz:

Anzahl der Betroffenen hilft bei der Eingrenzung.

Typische Linux-Fehlerbilder

Fehlerbild Wahrscheinliche Ursache
Dienst startet nicht Konfiguration, Rechte, Port, Abhängigkeit
Permission denied Rechteproblem
No such file or directory falscher Pfad oder Datei fehlt
No space left on device Speicherplatz oder Inodes voll
Read-only file system Dateisystem nur lesbar oder Fehler
Connection refused Dienst läuft nicht oder Port geschlossen
Connection timed out Firewall, Routing oder Ziel nicht erreichbar
Name or service not known DNS oder Name falsch
Too many open files Limit für offene Dateien erreicht
Out of memory RAM knapp, OOM-Killer aktiv
Target is busy Mount oder Datei wird noch verwendet

Connection refused

Bedeutung:

Das Zielsystem ist erreichbar,
aber der Dienst nimmt auf diesem Port keine Verbindung an.

Mögliche Ursachen:

Dienst läuft nicht

falscher Port

Dienst lauscht nur auf anderer Adresse

lokale Firewall lehnt aktiv ab

Prüfen:

systemctl status dienst

ss -tulpen

journalctl -u dienst

Merksatz:

Connection refused:
Ziel erreichbar,
Dienst oder Port problematisch.

Connection timed out

Bedeutung:

Die Verbindung erhält keine Antwort innerhalb der Zeit.

Mögliche Ursachen:

Firewall verwirft Pakete

Routingproblem

Ziel nicht erreichbar

falsche IP

Netzwerkproblem

Cloud Security Group blockiert

Prüfen:

ping

ip route

Firewall-Regeln

Netzwerkpfad

Merksatz:

Timeout deutet oft auf Firewall,
Routing
oder Nichterreichbarkeit hin.

Permission denied

Bedeutung:

Zugriff verweigert.

Mögliche Ursachen:

fehlende Dateirechte

falscher Besitzer

falsche Gruppe

fehlendes x-Recht auf Verzeichnis

sudo nötig

Dienstbenutzer hat keine Rechte

Prüfen:

whoami

id

ls -l datei

ls -ld verzeichnis

Merksatz:

Permission denied ist meist ein Rechteproblem.

No such file or directory

Bedeutung:

Datei oder Verzeichnis existiert nicht.

Mögliche Ursachen:

falscher Pfad

Tippfehler

falsche Groß-/Kleinschreibung

Datei wurde gelöscht

Mount fehlt

relativer Pfad falsch verstanden

Prüfen:

pwd

ls -la

find

mount

Merksatz:

Linux unterscheidet Groß-
und Kleinschreibung.

Too many open files

Bedeutung:

Ein Prozess oder Benutzer hat zu viele Dateien,
Sockets
oder Verbindungen geöffnet.

Mögliche Ursachen:

hohe Last

Fehler in Anwendung

zu niedriges Limit

Verbindungsleck

Prüfen:

Logs

Prozessstatus

Limits

offene Dateien

Merksatz:

Unter Linux zählen auch Netzwerkverbindungen als offene Dateien.

Logs und Sicherheit

Logs sind auch für Sicherheit wichtig.

Wichtige Ereignisse:

fehlgeschlagene Logins

sudo-Nutzung

SSH-Zugriffe

neue Benutzer

Rechteänderungen

Dienststarts

Firewall-Blockierungen

ungewöhnliche Prozesse

viele Anmeldeversuche

Beispiele:

journalctl -u ssh

grep -i "failed" /var/log/auth.log

grep -i "sudo" /var/log/auth.log

Merksatz:

Sicherheitsanalyse beginnt oft in Auth-
und Dienstlogs.

Backup und Logs

Logs können nach einem Vorfall wichtig sein.

Aber:

Logs auf demselben kompromittierten System können manipuliert werden.

Besser:

zentrale Logsammlung

SIEM

manipulationsgeschützte Logs

Zeitserver verwenden

ausreichende Aufbewahrung

Merksatz:

Für Sicherheitsvorfälle sind zentrale und geschützte Logs wertvoll.

Zeit und Logs

Korrekte Uhrzeit ist für Logs wichtig.

Wenn die Systemzeit falsch ist, werden Ereignisse schwer nachvollziehbar.

Prüfen:

timedatectl

Zeitdienst prüfen:

systemctl status systemd-timesyncd

oder je nach System:

chrony

ntpd

Merksatz:

Ohne korrekte Zeit sind Logs schwer auswertbar.

Dokumentation bei Fehlersuche

Bei Fehlersuche dokumentieren:

- Fehlerbild
- Zeitpunkt
- betroffene Systeme
- ausgeführte Prüfungen
- relevante Logmeldungen
- Ursache
- Maßnahme
- Ergebnis
- offene Punkte

Warum?

Nachvollziehbarkeit

Wiederverwendbarkeit

Übergabe an Kollegen

spätere Analyse

Prüfungsrelevanz

Merksatz:

Gute Administration dokumentiert Fehler und Lösung.

Typische Befehle dieser Seite

Befehl Zweck
journalctl systemd-Journal anzeigen
journalctl -u dienst Logs eines Dienstes anzeigen
journalctl -f Logs live mitlesen
journalctl -b Logs seit letztem Boot
dmesg Kernelmeldungen anzeigen
dmesg -T Kernelmeldungen mit lesbarer Zeit
less logfile lange Logdatei lesen
tail -f logfile Log live verfolgen
grep muster logfile Log nach Muster filtern
systemctl status dienst Dienststatus prüfen
top Prozesse und Last live prüfen
free -h RAM und Swap prüfen
df -h Speicherplatz prüfen
df -i Inodes prüfen
du -sh ordner Ordnergröße prüfen
ip addr IP-Adressen prüfen
ip route Routing prüfen
ss -tulpen Ports prüfen
curl -I URL Webantwort prüfen
timedatectl Uhrzeit und Zeitsynchronisation prüfen

Typische Prüfungsfragen

Frage Kurzantwort
Was sind Logs? Protokolle von Ereignissen
Wo liegen viele klassische Logs? /var/log
Was macht journalctl? systemd-Journal anzeigen
Wie zeigt man Dienstlogs? journalctl -u dienst
Wie liest man Logs live mit? tail -f oder journalctl -f
Was macht dmesg? Kernelmeldungen anzeigen
Was ist Monitoring? regelmäßige Überwachung
Was ist Alerting? Benachrichtigung bei Ereignissen
Warum ist Logrotation wichtig? verhindert zu große Logs
Was prüft df -h? Speicherplatz
Was prüft free -h? RAM und Swap
Was bedeutet Connection refused? Ziel erreichbar, Dienst/Port lehnt ab
Was bedeutet Connection timed out? keine Antwort, oft Firewall/Routing
Warum ist korrekte Zeit wichtig? Logs müssen zeitlich stimmen

Typische Prüfungsfallen

Falle Richtig denken
Logs ignorieren Logs liefern Ursache und Zeitbezug
nur Dienst neu starten erst Status und Logs prüfen
cat für riesige Logs nutzen less, tail oder grep verwenden
Monitoring mit Logging verwechseln Logs protokollieren, Monitoring überwacht
Alerting vergessen Monitoring ohne Alarm wird leicht übersehen
hohe CPU ohne Prozessbezug nennen verursachenden Prozess ermitteln
Speicher frei, aber Fehler beim Schreiben Inodes prüfen
Zeitfehler ignorieren falsche Zeit erschwert Loganalyse
Connection refused und timed out gleichsetzen unterschiedliche Ursachen
nach Änderung nicht an Rollback denken Änderungen dokumentieren und absichern

IHK-sichere Kurzformulierung

Logs sind Protokolle von Ereignissen und dienen der Fehlersuche, Überwachung und Sicherheitsanalyse. Viele klassische Logdateien liegen unter /var/log, während auf systemd-Systemen journalctl das zentrale Journal auswertet. Dienstprobleme werden typischerweise mit systemctl status und journalctl -u geprüft. tail -f oder journalctl -f können neue Logeinträge live anzeigen. Monitoring überwacht Ressourcen und Dienste wie CPU, RAM, Speicherplatz, Inodes, Netzwerk, Ports, Backups und Zertifikate. Alerting benachrichtigt bei Grenzwerten oder Fehlern. Eine systematische Fehlersuche grenzt das Problem anhand von Fehlerbild, Zeitpunkt, betroffenen Systemen, Logs, Ressourcen, Netzwerk, Rechten und letzten Änderungen ein.


Merksätze

Logs zeigen Ereignisse.

Monitoring überwacht Zustände.

Alerting warnt aktiv.

/var/log enthält viele klassische Logs.

journalctl liest das systemd-Journal.

journalctl -u zeigt Dienstlogs.

journalctl -f liest live mit.

journalctl -b zeigt Logs seit letztem Boot.

dmesg zeigt Kernelmeldungen.

less ist gut für lange Logs.

tail -f liest Logdateien live mit.

grep filtert relevante Logzeilen.

Logrotation verhindert zu große Logs.

df -h prüft Speicherplatz.

df -i prüft Inodes.

free -h prüft RAM und Swap.

top zeigt Last und Prozesse.

ss zeigt Ports.

curl prüft HTTP oder HTTPS.

systemctl status zeigt Dienstzustand.

Connection refused:
Dienst oder Port problematisch.

Connection timed out:
Firewall,
Routing
oder Nichterreichbarkeit.

Permission denied:
Rechteproblem.

No space left on device:
Speicherplatz oder Inodes prüfen.

Nach Änderung zuerst Änderung prüfen.

Nicht raten,
sondern eingrenzen.

Gute Fehlersuche wird dokumentiert.

Korrekte Uhrzeit ist wichtig für Logs.