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 erreicht
  • rotate N — Anzahl der aufzubewahrenden Archivkopien, bevor alte gelöscht werden
  • create — nach der Rotation eine neue leere Log-Datei mit den ursprünglichen Rechten und Eigentümerinfos anlegen
  • compress — archivierte Logs komprimieren (standardmäßig gzip)
  • dateext — Datum in den Archivdateinamen aufnehmen, z. B. access.log-20250918
  • missingok — keinen Fehler ausgeben, wenn die Log-Datei nicht existiert
  • notifempty — Rotation überspringen, wenn die Log-Datei leer ist
  • postrotate ... 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 Rotation
  • rotate 14 — Archive für zwei Wochen aufbewahren
  • compress — alte Logs per gzip komprimieren
  • notifempty — keine Rotation, wenn die Log-Datei leer ist
  • create 0640 www-data www-data — neue Log-Datei mit den Rechten 0640 und Eigentümer www-data erstellen
  • postrotate ... endscript — die Anwendung nach jeder Rotation neu laden, damit sie die neue Log-Datei verwendet

Unsere Produkte und Dienste

WebhostingLäuft auf ultraschnellen NVMe-Laufwerken. Geeignet für Websites jeder Komplexität.
Bestellen
VPSFlexible Cloud-Infrastruktur mit vollem Root-Zugriff.
Bestellen
Dedizierte ServerBare-Metal-Server für maximale Leistung.
Bestellen

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!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns