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

DateiInhalt
/var/log/syslogSystem-Events (Debian/Ubuntu)
/var/log/messagesSystem-Events (CentOS/RHEL)
/var/log/auth.logAuthentifizierung, SSH-Logins
/var/log/kern.logKernel-Meldungen
/var/log/dmesgBoot-Meldungen
/var/log/apt/APT-Paketmanager
/var/log/dpkg.logPaket-Installationen

Dienst-spezifische Logs

PfadDienst
/var/log/apache2/Apache Webserver
/var/log/nginx/Nginx Webserver
/var/log/mysql/MySQL/MariaDB
/var/log/postgresql/PostgreSQL
/var/log/mail.logE-Mail-Server

Logs lesen

Die letzten Zeilen

# Letzte 20 Zeilen
tail -20 /var/log/syslog

# Letzte 100 Zeilen
tail -100 /var/log/auth.log

Live mitverfolgen

tail -f /var/log/syslog

Mit Ctrl+C beenden.

Mehrere Logs gleichzeitig

tail -f /var/log/syslog /var/log/auth.log

Mit multitail (empfohlen)

apt install multitail
multitail /var/log/syslog /var/log/auth.log

Logs 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.log

Mit Kontext

# 5 Zeilen vor und nach dem Treffer
grep -B5 -A5 "error" /var/log/syslog

Regex-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.log

In allen Logs suchen

grep -r "error" /var/log/

journalctl - Systemd-Logs

Moderne Linux-Systeme nutzen systemd-journal:

Alle Logs

journalctl

Aktuelle Session

journalctl -b

Live-Ansicht

journalctl -f

Nach 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 mysql

Nach Priorität

# Nur Fehler
journalctl -p err

# Warnungen und höher
journalctl -p warning

Prioritäten: emerg, alert, crit, err, warning, notice, info, debug

Kernel-Meldungen

journalctl -k

Häufige Log-Analysen

Fehlgeschlagene SSH-Versuche

grep "Failed password" /var/log/auth.log | tail -20

Top IP-Adressen bei Angriffen

grep "Failed password" /var/log/auth.log | \
  awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10

Webserver-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.log

Log-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.conf

Logs 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:514

Moderne Alternativen

  • Loki + Grafana: Open Source
  • ELK Stack: Elasticsearch, Logstash, Kibana
  • Graylog: Zentrale Log-Verwaltung

Nützliche Tools

apt install lnav
lnav /var/log/syslog

Bietet farbige Darstellung und Navigation.

GoAccess - Webserver-Logs

apt install goaccess
goaccess /var/log/nginx/access.log

Erstellt schöne Statistiken.

ccze - Logs farbig darstellen

apt install ccze
tail -f /var/log/syslog | ccze

Best Practices

Logs regelmäßig prüfen

# Täglicher Check
grep -i "error\|fail\|warn" /var/log/syslog | tail -50

Monitoring 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

AufgabeBefehl
Letzte Zeilentail -f /var/log/syslog
Durchsuchengrep "error" /var/log/syslog
Systemd-Logsjournalctl -u dienst
Seit heutejournalctl --since today
Nur Fehlerjournalctl -p err
Boot-Meldungendmesg

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.