Log Rotation auf Linux Server einrichten

(Last Updated On: 31. Mai 2016)

Sobald Sie auf Ihrem Linux Server mehrere Dienste laufen lassen, die von mehreren Benutzern unter stress gesetzt werden, erhöht sich der Mitteilungsbedarf des Betriebssystems enorm. Log-Dateien sammeln sich an allen Fronten an – und das ist auch gut so. Denn diese dienen der frühzeitigen Erkennung, aber auch der nachträglichen Beseitigung, von Fehlern und Performanceproblemen.

Was jedoch nicht sein darf ist, dass ein Dienst die Möglichkeit besitzt, eine Log-datei mehrere Gigabyte an Datenvolumen annehmen zu lassen. Denn dies kann ganz schnell zu einem Volllaufen des Data Volumes führen, auf dem sich das Betriebssystem oder andere wichtige Dienste niedergelassen haben.

Der erste Schritt, um einen kompletten Stillstand des Systems bei übergroßen Logdateien zu verhindern, ist eine ordentliche Partition des systems. Die typischen Verzeichnisse, an denen sich Log-dateien ansammeln, solllten in extra Partitionen oder bestenfalls Logical Volumes gepackt werden. Lesen Sie hierzu meinen Post über den Linux Logical Volume Manager.

Aber nur, weil jetzt die Logs in einem Extra Volume untergebracht sind, heißt es noch lange nicht, dass es  Sinn macht, dieses Volume voll laufen zu lassen. Denn schließlich kann das Log ja dann nich weiter beschrieben werden – und man verpasst die aktuellen Einträge in diesem Log.

Für diesen Zweck gibt es den Service logrotate. Diesen können Sie z. B. installieren über

apt-get install logrotate

Dieser Dienst nimmt eine Log-Datei, die ein bestimmtes Alter oder eine bestimmte Görße überschritten hat, und archiviert diese in ein anderes Verzeichnis. Der Dienst, der diese Log-Datei ursprünglich geschrieben hat (z. B. der Apache Webserver) fängt dann eine neue Datei an. Was mit dem archivierten Log passiert, kann man konfigurieren. So kann man sich das Log beispielsweise selber per Mail schicken, das Log einfach nur Löschen oder das archivierte Log in einen größeren Storage kopieren.

Der Dienst erstellt normalerweise bereits eine STandard-Konfigurationsdatei namens /etc/logrotate.conf. Diese Datei enthält die Einstellungen für alle Dienste, für die nicht explizit eine diensteigene Konfigurationsdatei unter /etc/logrotate.d angelegt wurde. Sie hat folgenden Standard-Inhalt

# see "man logrotate" for details
 # rotate log files weekly
 weekly
 # keep 4 weeks worth of backlogs
 rotate 4
 # create new (empty) log files after rotating old ones
 create
 # uncomment this if you want your log files compressed
 #compress
 # RPM packages drop log rotation information into this directory
 include /etc/logrotate.d

Diese Konfiguration bedeutet, dass alle Logs, die der Dienst automatisch erkennt, alle 7 Tage (weekly) rotiert werden. Die Logs werden archiviert und erst dann gelöscht, wenn sie ein Alter von 4 Wochen überschritten haben (rotate 4). Wird ein Log archiviert, wird automatisch ein neues, frisches Log mit dem gleichen Namen erstellt (create).

Nun haben Sie die Möglichkeit, innerhalb von /etc/logrotate.d für jeden Dienst spezifisch nochmal eine eigene Konfiguration anzulegen. Wenn beispielsweise der Apache Webserver im Verzeichnis /var/log/httpd/ mehrere .log-Dateien erstlelt, können Sie diese über eine Datei /etc/logrotate.d/httpd konfigurieren. Wenn Sie dort folgendes hineinschreiben.

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
     <tue was>
    endscript
}

DAnn sagen wir logrotate, dass er im Verzeichnis /var/log/httpd nach Dateien mit „log“ im Dateinamen suchen soll – also wird er in der Regel Dateine mit .log am Ende finden. WEnn gar keine Dateien mit „log“ im Namen vorhanden sind, soll er keine Fehlermeldung auswerfen (missingok), und er soll keine Logs archivieren, die 0 Byte groß sind (notifempty). Außerdem soll er nach der Archivierung die Kommandozeile ausführen (postorate), die an der STelle von „<tue was>“ geschrieben werden kann. Dies könnte beispielsweise eine Zeile mit dem Befehl mail -s sein, über die man sich selber eine E-Mail schicken kann, oder ein Kommando zum Wegsichern der archivierten Log-Dateien in ein anderes Verzeichnis.

Die anderen Optionen von logrotate sind sehr gut dokumentiert. Man kann sich eine volle Liste der Optionen über den Befehl

man logrotate

ausgeben lassen.

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren...

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.