Log-Dateien sind unverzichtbar für die Server-Administration. Sie protokollieren alles von Systemereignissen bis zu Anwendungsfehlern.
Wo liegen die Logs?
Die meisten Log-Dateien befinden sich unter /var/log/:
ls -la /var/log/Wichtige Log-Dateien
| Datei | Inhalt | |-------|--------| | /var/log/syslog | System-Events (Debian/Ubuntu) | | /var/log/messages | System-Events (CentOS/RHEL) | | /var/log/auth.log | Authentifizierung, SSH-Logins | | /var/log/kern.log | Kernel-Meldungen | | /var/log/dmesg | Boot-Meldungen | | /var/log/apt/ | APT-Paketmanager | | /var/log/dpkg.log | Paket-Installationen |
Dienst-spezifische Logs
| Pfad | Dienst | |------|--------| | /var/log/apache2/ | Apache Webserver | | /var/log/nginx/ | Nginx Webserver | | /var/log/mysql/ | MySQL/MariaDB | | /var/log/postgresql/ | PostgreSQL | | /var/log/mail.log | E-Mail-Server |
Logs lesen
Die letzten Zeilen
# Letzte 20 Zeilen
tail -20 /var/log/syslog
# Letzte 100 Zeilen
tail -100 /var/log/auth.logLive mitverfolgen
tail -f /var/log/syslogMit Ctrl+C beenden.
Mehrere Logs gleichzeitig
tail -f /var/log/syslog /var/log/auth.logMit multitail (empfohlen)
apt install multitail
multitail /var/log/syslog /var/log/auth.logLogs durchsuchen
Mit grep
# Fehler finden
grep -i error /var/log/syslog
# SSH-Logins
grep "Accepted" /var/log/auth.log
# Fehlgeschlagene Logins
grep "Failed" /var/log/auth.log
# IP-Adresse suchen
grep "192.168.1.100" /var/log/auth.logMit Kontext
# 5 Zeilen vor und nach dem Treffer
grep -B5 -A5 "error" /var/log/syslogRegex-Suche
# Zeilen mit IP-Adressen
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /var/log/auth.logIn allen Logs suchen
grep -r "error" /var/log/journalctl - Systemd-Logs
Moderne Linux-Systeme nutzen systemd-journal:
Alle Logs
journalctlAktuelle Session
journalctl -bLive-Ansicht
journalctl -fNach Zeit filtern
# Seit heute
journalctl --since today
# Letzte Stunde
journalctl --since "1 hour ago"
# Zeitraum
journalctl --since "2024-01-20" --until "2024-01-21"Nach Dienst
journalctl -u nginx
journalctl -u ssh
journalctl -u mysqlNach Priorität
# Nur Fehler
journalctl -p err
# Warnungen und höher
journalctl -p warningPrioritäten: emerg, alert, crit, err, warning, notice, info, debug
Kernel-Meldungen
journalctl -kHäufige Log-Analysen
Fehlgeschlagene SSH-Versuche
grep "Failed password" /var/log/auth.log | tail -20Top IP-Adressen bei Angriffen
grep "Failed password" /var/log/auth.log | \
awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10Webserver-Zugriffe (Apache)
# Häufigste IPs
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -10
# 404-Fehler
grep " 404 " /var/log/apache2/access.log
# Große Zugriffe (>100 pro IP)
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | awk '$1 > 100'Festplatten-Fehler
grep -i "error" /var/log/kern.log | grep -i "sd[a-z]"Out of Memory
grep -i "out of memory" /var/log/syslog
grep -i "oom-killer" /var/log/kern.logLog-Rotation
Logs werden automatisch rotiert, um Speicherplatz zu sparen.
Konfiguration prüfen
cat /etc/logrotate.conf
ls /etc/logrotate.d/Beispiel-Konfiguration
cat /etc/logrotate.d/nginx/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null
endscript
}Manuell rotieren
logrotate -f /etc/logrotate.confLogs zentral sammeln
Mit rsyslog
Auf dem Log-Server /etc/rsyslog.conf:
# TCP/UDP aktivieren
module(load="imtcp")
input(type="imtcp" port="514")Auf den Clients:
# Logs an Server senden
*.* @@logserver.example.com:514Moderne Alternativen
- Loki + Grafana: Open Source
- ELK Stack: Elasticsearch, Logstash, Kibana
- Graylog: Zentrale Log-Verwaltung
Nützliche Tools
lnav - Log Navigator
apt install lnav
lnav /var/log/syslogBietet farbige Darstellung und Navigation.
GoAccess - Webserver-Logs
apt install goaccess
goaccess /var/log/nginx/access.logErstellt schöne Statistiken.
ccze - Logs farbig darstellen
apt install ccze
tail -f /var/log/syslog | cczeBest Practices
Logs regelmäßig prüfen
# Täglicher Check
grep -i "error\|fail\|warn" /var/log/syslog | tail -50Monitoring einrichten
Automatische Alerts bei:
- Viele fehlgeschlagene Logins
- Festplatten-Fehler
- Out of Memory
- Service-Abstürze
Aufbewahrungszeit
- Wichtige Logs: Mindestens 90 Tage
- Debug-Logs: 7-14 Tage
- DSGVO beachten (personenbezogene Daten)
Log-Level richtig setzen
Zu viel Logging:
- Füllt Festplatte
- Erschwert Suche
Zu wenig Logging:
- Fehler nicht nachvollziehbar
Befehlsübersicht
| Aufgabe | Befehl | |---------|--------| | Letzte Zeilen | tail -f /var/log/syslog | | Durchsuchen | grep "error" /var/log/syslog | | Systemd-Logs | journalctl -u dienst | | Seit heute | journalctl --since today | | Nur Fehler | journalctl -p err | | Boot-Meldungen | dmesg |
Fazit
Log-Dateien sind die erste Anlaufstelle bei Problemen. Machen Sie sich mit den wichtigsten Logs vertraut und richten Sie Monitoring ein, um Probleme frühzeitig zu erkennen. journalctl ist bei systemd-Systemen besonders mächtig.