Protokolle

System-Protokollierung.

Log-Verzeichnisse

System-Logs

/var/log/syslog          # System-Logs
/var/log/auth.log        # Authentifizierung
/var/log/kern.log        # Kernel-Logs
/var/log/dmesg           # Boot-Messages

Service-Logs

/var/log/nginx/          # Nginx-Logs
/var/log/apache2/        # Apache-Logs
/var/log/mail.log        # Mail-Logs
/var/log/mysql/          # MySQL-Logs

Application-Logs

/var/log/app/            # Application-Logs
/var/log/audit/          # Audit-Logs

Log-Rotation

Logrotate-Konfiguration

sudo nano /etc/logrotate.conf
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 644 root root
include /etc/logrotate.d

Custom Logrotate

sudo nano /etc/logrotate.d/custom-app
/var/log/app/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 644 app app
    postrotate
        systemctl reload app
    endscript
}

Log-Analyse

Echtzeit-Überwachung

# System-Logs
sudo tail -f /var/log/syslog

# Auth-Logs
sudo tail -f /var/log/auth.log

# Webserver-Logs
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

Log-Suche

# Fehler suchen
grep -i error /var/log/syslog

# Bestimmte Zeitperiode
grep "2024-01-15" /var/log/syslog

# IP-Adressen in Logs
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/nginx/access.log

Log-Auswertung

# Top-10 IPs
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

# HTTP-Status-Codes
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

# Fehler-Logs der letzten Stunde
find /var/log -name "*.log" -mmin -60 -exec grep -i error {} \;

Central Logging

Rsyslog-Konfiguration

sudo nano /etc/rsyslog.conf
# Remote Logging
*.* @@logserver.example.com:514

# Local Logging
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
sudo systemctl restart rsyslog

Logstash (optional)

sudo apt install openjdk-11-jre
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt install logstash

Log-Aufbewahrung

Aufbewahrungsrichtlinie

#!/bin/bash
# Log-Archivierung

LOG_DIR="/var/log"
ARCHIVE_DIR="/var/log/archives"
RETENTION_DAYS=90

# Alte Logs archivieren
find $LOG_DIR -name "*.log.*" -mtime +7 -exec mv {} $ARCHIVE_DIR/ \;

# Alte Archive löschen
find $ARCHIVE_DIR -name "*.gz" -mtime +$RETENTION_DAYS -delete
sudo chmod +x /usr/local/bin/archive-logs.sh
sudo nano /etc/cron.weekly/archive-logs

Zurück zur Monitoring-Übersicht