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

QuelleBedeutung
systemd-Journalzentrale systemd-Logs
/var/logklassische Logdateien
DienstlogsLogs einzelner Anwendungen
KernelmeldungenHardware, Treiber, Kernel
AuthentifizierungslogsLogin, sudo, SSH
Paketmanager-LogsInstallationen und Updates
Webserver-LogsHTTP-Zugriffe und Fehler
Firewall-Logserlaubter oder blockierter Verkehr
AnwendungslogsFehler und Ereignisse von Anwendungen

Merksatz:

Nicht alle Logs liegen an derselben Stelle.

/var/log

Viele klassische Logdateien liegen unter:

/var/log

Beispiele:

PfadBedeutung
/var/log/syslogallgemeine Systemmeldungen, häufig Debian/Ubuntu
/var/log/messagesallgemeine Systemmeldungen, häufig RHEL/Fedora-Umfeld
/var/log/auth.logAuthentifizierung, häufig Debian/Ubuntu
/var/log/secureAuthentifizierung, häufig RHEL/Fedora-Umfeld
/var/log/kern.logKernelmeldungen, je nach Distribution
/var/log/dmesgBoot- und Kernelmeldungen, je nach Distribution
/var/log/nginxNginx-Logs
/var/log/apache2Apache-Logs
/var/log/aptapt-Logs
/var/log/journaldauerhaftes 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ätBedeutung
emergSystem unbenutzbar
alertsofortiges Eingreifen nötig
critkritischer Fehler
errFehler
warningWarnung
noticeHinweis
infoInformation
debugDebug-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

SuchbegriffMögliche Bedeutung
errorFehler
failedfehlgeschlagen
deniedverweigert
refusedabgelehnt
timeoutZeitüberschreitung
not foundnicht gefunden
permissionRechteproblem
authenticationAnmeldung
invalidungültig
disconnectVerbindung getrennt
no spaceSpeicherproblem
read-onlynur 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

WertWarum wichtig?
CPUhohe Last kann Dienste verlangsamen
RAMSpeichermangel führt zu Swap oder Fehlern
Swapstarke Nutzung kann System verlangsamen
Speicherplatzvolle Dateisysteme verhindern Schreibzugriffe
Inodeszu viele Dateien verhindern neue Dateien
Load Averagezeigt Systemlast
NetzwerkVerbindungsprobleme oder Paketverlust
Dienststatuszeigt, ob Dienste laufen
Logszeigen 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

CodeBedeutungWahrscheinliche Richtung
200OKDienst antwortet
301 / 302WeiterleitungWebserver oder Anwendung
401nicht authentifiziertLogin fehlt oder falsch
403verbotenRechteproblem
404nicht gefundenPfad oder Ressource falsch
500interner ServerfehlerAnwendung oder Backend
502Bad GatewayProxy erreicht Backend nicht
503Dienst nicht verfügbarBackend 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:

BetroffenWahrscheinliche Richtung
ein BenutzerBenutzerrechte, Client, Konto
alle BenutzerDienst, Server, Netzwerk, Authentifizierung
ein ServerDienst, Ressourcen, lokale Konfiguration
alle ServerNetzwerk, DNS, zentrale Dienste
eine AnwendungAnwendung, Datenbank, Backend
mehrere AnwendungenInfrastruktur, DNS, Storage, Netzwerk

Merksatz:

Anzahl der Betroffenen hilft bei der Eingrenzung.

Typische Linux-Fehlerbilder

FehlerbildWahrscheinliche Ursache
Dienst startet nichtKonfiguration, Rechte, Port, Abhängigkeit
Permission deniedRechteproblem
No such file or directoryfalscher Pfad oder Datei fehlt
No space left on deviceSpeicherplatz oder Inodes voll
Read-only file systemDateisystem nur lesbar oder Fehler
Connection refusedDienst läuft nicht oder Port geschlossen
Connection timed outFirewall, Routing oder Ziel nicht erreichbar
Name or service not knownDNS oder Name falsch
Too many open filesLimit für offene Dateien erreicht
Out of memoryRAM knapp, OOM-Killer aktiv
Target is busyMount 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

BefehlZweck
journalctlsystemd-Journal anzeigen
journalctl -u dienstLogs eines Dienstes anzeigen
journalctl -fLogs live mitlesen
journalctl -bLogs seit letztem Boot
dmesgKernelmeldungen anzeigen
dmesg -TKernelmeldungen mit lesbarer Zeit
less logfilelange Logdatei lesen
tail -f logfileLog live verfolgen
grep muster logfileLog nach Muster filtern
systemctl status dienstDienststatus prüfen
topProzesse und Last live prüfen
free -hRAM und Swap prüfen
df -hSpeicherplatz prüfen
df -iInodes prüfen
du -sh ordnerOrdnergröße prüfen
ip addrIP-Adressen prüfen
ip routeRouting prüfen
ss -tulpenPorts prüfen
curl -I URLWebantwort prüfen
timedatectlUhrzeit und Zeitsynchronisation prüfen

Typische Prüfungsfragen

FrageKurzantwort
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

FalleRichtig denken
Logs ignorierenLogs liefern Ursache und Zeitbezug
nur Dienst neu startenerst Status und Logs prüfen
cat für riesige Logs nutzenless, tail oder grep verwenden
Monitoring mit Logging verwechselnLogs protokollieren, Monitoring überwacht
Alerting vergessenMonitoring ohne Alarm wird leicht übersehen
hohe CPU ohne Prozessbezug nennenverursachenden Prozess ermitteln
Speicher frei, aber Fehler beim SchreibenInodes prüfen
Zeitfehler ignorierenfalsche Zeit erschwert Loganalyse
Connection refused und timed out gleichsetzenunterschiedliche 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.