Logrotate für Webserver: Logs verwalten ohne Festplatte zu füllen

Die Verwaltung von Logdateien ist essenziell für den stabilen Betrieb von Webservern. Ohne ein automatisches Rotations- und Löschsystem können Access Logs und Error Logs schnell die Festplatte füllen, was zu Ausfällen oder Performanceproblemen führen kann. Mit logrotate lassen sich Logs automatisch archivieren, komprimieren und löschen. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers Schritt für Schritt, wie logrotate für Webserver eingerichtet und optimiert wird.

Grundlagen von Logrotate

logrotate ist ein Linux-Dienst, der automatisch Logdateien rotiert, archiviert, komprimiert und bei Bedarf löscht. Er arbeitet über Konfigurationsdateien, die entweder global oder pro Service definiert werden.

  • Automatische Rotation nach Größe oder Zeitraum
  • Kompression alter Logs zur Reduzierung des Speicherplatzes
  • Löschung alter Logs nach definierter Zeit
  • Möglichkeit zur Integration von Skripten nach Rotation

Installation und Konfiguration

Die meisten Linux-Distributionen liefern logrotate bereits vorinstalliert. Andernfalls kann es über die Paketverwaltung installiert werden.

Ubuntu/Debian

sudo apt install logrotate -y

CentOS/RHEL

sudo yum install logrotate -y

Globale Konfiguration

Die globale Konfigurationsdatei befindet sich in /etc/logrotate.conf. Hier können Standardwerte für alle Logs definiert werden.

Beispiel globale Einstellungen

/etc/logrotate.conf

Rotation täglich

daily

Alte Logs maximal 14 Tage aufbewahren

rotate 14

Alte Logs komprimieren

compress

Nicht existierende Logs ignorieren

missingok

Systemweite Post-rotate Skripte

notifempty
create 640 root adm
include /etc/logrotate.d

Service-spezifische Konfiguration

Jeder Webserver (Apache, Nginx, PHP) kann eigene Logrotate-Konfigurationen haben, üblicherweise im Verzeichnis /etc/logrotate.d/.

Apache Beispiel

sudo nano /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if systemctl status apache2 > /dev/null ; then
            systemctl reload apache2 >/dev/null
        fi
    endscript
}

Nginx Beispiel

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 www-data adm
    sharedscripts
    postrotate
        if systemctl status nginx > /dev/null ; then
            systemctl reload nginx >/dev/null
        fi
    endscript
}

PHP-FPM Beispiel

/var/log/php/*.log {
    weekly
    missingok
    rotate 8
    compress
    delaycompress
    notifempty
    create 640 www-data adm
    sharedscripts
    postrotate
        systemctl reload php8.1-fpm >/dev/null
    endscript
}

Parameter im Detail

  • daily/weekly/monthly: Rotationszeitraum
  • rotate: Anzahl der aufzubewahrenden Archivdateien
  • compress / delaycompress: Kompression alter Logs, verzögerte Kompression optional
  • missingok: Ignoriert fehlende Dateien
  • notifempty: Überspringt leere Dateien
  • create: Neue Logdateien nach Rotation anlegen mit Berechtigungen
  • postrotate/endscript: Skripte nach Rotation ausführen, z. B. Service-Reload

Logrotate testen

Um zu prüfen, ob die Konfiguration korrekt funktioniert, kann ein Testlauf durchgeführt werden.

sudo logrotate -d /etc/logrotate.conf

Der Parameter -d führt einen Debuglauf aus, ohne die Logs tatsächlich zu rotieren.

Rotation manuell auslösen

sudo logrotate -f /etc/logrotate.conf

Der Parameter -f erzwingt eine Rotation, auch wenn die Zeitkriterien noch nicht erreicht sind.

Monitoring und Fehlerbehebung

Logs sollten regelmäßig überwacht werden, um sicherzustellen, dass Rotationen korrekt durchgeführt werden und keine Festplatte überläuft.

Disk-Space prüfen

df -h
du -sh /var/log/apache2
du -sh /var/log/nginx

Logrotate Status prüfen

cat /var/lib/logrotate/status

Best Practices

  • Rotation nach Größe oder Zeit kombinieren, z. B. täglich und bei >100MB
  • Alte Logs komprimieren, um Speicherplatz zu sparen
  • Postrotate-Skripte nutzen, um Services sauber neu zu laden
  • Regelmäßig Disk Space überwachen
  • Separate Konfigurationen für Apache, Nginx und PHP-FPM verwenden
  • Logs sichern, falls historische Daten für Analyse oder Audit benötigt werden
  • Fehlerhafte Konfigurationen mit logrotate -d prüfen

Netzwerk und Subnetze

Die Netzwerkarchitektur beeinflusst die Log-Analyse, insbesondere bei mehreren Webservern oder Load Balancern. Korrekte IPs und Subnetze erleichtern die Filterung und Korrelation von Logs.

Subnetzberechnung

Beispiel: Server-IP 192.168.110.25/24

<math>
Subnetzadresse = 192.168.110.25 & 255.255.255.0 = 192.168.110.0
Broadcastadresse = 192.168.110.0 | ~255.255.255.0 = 192.168.110.255
</math>

Netzwerkinterface konfigurieren

sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 192.168.110.25/24
      gateway4: 192.168.110.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles