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 -dprü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.

