Logs mit Logrotate auf CentOS 7 verwalten
Konfiguration von logrotate zur Verwaltung von System- und Anwendungs-Logs.
Logrotate ist eines jener Tools, das still und leise für Ordnung auf dem Server sorgt. Es verhindert, dass Log-Dateien unkontrolliert wachsen und den Speicherplatz auffressen — besonders wichtig auf VPS und dedizierten Servern, wo der Speicher begrenzt ist und Stabilität zählt.
Installation prüfen
Bevor Sie mit der Konfiguration beginnen, vergewissern Sie sich, dass logrotate tatsächlich installiert ist. Auf CentOS 7 ist es bereits vorinstalliert, aber ein kurzer Check schadet nie:
logrotate --version
Erscheint eine Versionsnummer — etwa logrotate 3.18.0 — ist alles bereit.
Aufbau der Konfiguration
Die Konfiguration von logrotate verteilt sich auf zwei Orte:
/etc/logrotate.conf— die Hauptkonfigurationsdatei mit globalen Standardwerten/etc/logrotate.d/— ein Verzeichnis mit dienstspezifischen Konfigurationsdateien, die die globalen Standardwerte überschreiben oder erweitern
Gemeinsam legen sie fest, welche Logs rotiert werden, wie oft, wie viele Archivkopien aufbewahrt werden und ob diese komprimiert werden sollen.
Die Hauptkonfigurationsdatei
Öffnen Sie /etc/logrotate.conf mit Ihrem bevorzugten Editor — z. B. vi:
vi /etc/logrotate.conf
Eine typische Datei sieht in etwa so aus:
# Logs einmal pro Woche rotieren
weekly
# 4 Archivkopien aufbewahren
rotate 4
# Nach der Rotation eine neue leere Log-Datei erstellen
create
# Datum an die archivierten Dateinamen anhängen
dateext
# Alte Logs komprimieren (bei Bedarf auskommentieren)
#compress
# Dienstspezifische Konfigurationen aus /etc/logrotate.d einbinden
include /etc/logrotate.d
# Einstellungen für System-Logs
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
Jede hier gesetzte Direktive gilt global — die dienstspezifischen Konfigurationen in /etc/logrotate.d/ können diese bei Bedarf überschreiben.
Die wichtigsten Direktiven im Überblick
daily / weekly / monthly / size— Rotationshäufigkeit: nach Zeitplan oder sobald eine Datei eine bestimmte Größe erreichtrotate N— Anzahl der aufzubewahrenden Archivkopien, bevor alte gelöscht werdencreate— nach der Rotation eine neue leere Log-Datei mit den ursprünglichen Rechten und Eigentümerinfos anlegencompress— archivierte Logs komprimieren (standardmäßig gzip)dateext— Datum in den Archivdateinamen aufnehmen, z. B.access.log-20250918missingok— keinen Fehler ausgeben, wenn die Log-Datei nicht existiertnotifempty— Rotation überspringen, wenn die Log-Datei leer istpostrotate ... endscript— einen Befehlsblock nach der Rotation ausführen (praktisch zum Neuladen eines Dienstes)maxage N— Archive automatisch löschen, die älter als N Tage sind
Rotation für eine bestimmte Anwendung einrichten
Angenommen, Ihre Anwendung my-app schreibt ihre Logs nach /var/log/my-app/. Erstellen Sie dafür eine eigene Konfigurationsdatei:
vi /etc/logrotate.d/my-app
Ein solider Ausgangspunkt:
/var/log/my-app/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload my-app
endscript
}
Was jede Zeile bewirkt:
daily— tägliche Rotationrotate 14— Archive für zwei Wochen aufbewahrencompress— alte Logs per gzip komprimierennotifempty— keine Rotation, wenn die Log-Datei leer istcreate 0640 www-data www-data— neue Log-Datei mit den Rechten0640und Eigentümerwww-dataerstellenpostrotate ... endscript— die Anwendung nach jeder Rotation neu laden, damit sie die neue Log-Datei verwendet
Unsere Produkte und Dienste
Konfiguration testen
Trockenlauf (keine Änderungen werden angewendet, zeigt nur, was passieren würde):
sudo logrotate /etc/logrotate.conf --debug
Eine bestimmte Dienstkonfiguration testen:
sudo logrotate -d /etc/logrotate.d/my-app
Sofortige Rotation erzwingen:
sudo logrotate /etc/logrotate.conf --force
Logs in benutzerdefinierten Verzeichnissen rotieren
Wenn Ihre Anwendung Logs an einem nicht standardmäßigen Pfad schreibt — etwa /home/user/logs/ — können Sie diese mit einer lokalen Konfigurationsdatei verwalten:
vi /home/user/logrotate.conf
/home/user/logs/*.log {
hourly
missingok
rotate 24
compress
create
}
Verzeichnis und eine Test-Log-Datei anlegen:
mkdir ~/logs
touch ~/logs/access.log
Dann eine erzwungene Rotation starten und dabei auf eine benutzerdefinierte Statusdatei verweisen:
logrotate /home/user/logrotate.conf \
--state /home/user/logrotate-state \
--verbose --force
--state— gibt an, wo logrotate die Information über seinen letzten Lauf speichert--verbose— gibt ein detailliertes Protokoll aller Aktionen aus
Automatisierung mit Cron
Um logrotate automatisch nach Zeitplan laufen zu lassen, fügen Sie einen Cron-Job hinzu:
crontab -e
Zum Beispiel, um es jede Stunde zur 14. Minute auszuführen:
14 * * * * /usr/sbin/logrotate /home/user/logrotate.conf --state /home/user/logrotate-state
Hilfe
Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!