Logrotation für lighttpd

Logfiles werden auf hochfrequentierten Webseiten sehr schnell sehr gross. Dies kann irgendwann zu Problemen führen, aber auch einfach der übermässige Speicherplatzverbrauch können tierisch auf die Nerven gehen, gerade wenn die Daten noch zur Datensicherung auf einen anderen Server übertragen werden sollen. Um dem Problem entgegen zu wirken, gibt das so genannte "Logrotating", was soviel bedeutet, dass die Logfiles bei Erfüllung bestimmter Kriterien rotiert werden, also neu angelegt und archiviert werden.

  1. FreeBSD nutzt für die Logrotation das Tool "newsyslog", welches in der Datei "/etc/newsyslog.conf" konfiguriert wird. Wenn du die Datei öffnest, siehst du schon einige Beispiele und wie diese konfiguriert sind.

  2. Zwar kannst du newsyslog für sämtliche Files verwenden, allerdings nutzen wir es in diesem Beispiel für lighttpd-logs, die auf vHost-Basis erstellt werden. Daher fügen wir folgende Zeile am Ende der "newsyslog.conf" ein:

    /<pfad-zu>/access.log <uid:gid> 640 7 500 * Z /var/run/lighttpd.pid

    Die Konfiguration gliedert sich in 8 Spalten:
    • "<pfad-zu>/access.log": Das ist der Pfad zu dem zu rotierenden Logfile.
    • "uid:gid": Das ist der Benutzer und die Gruppe, denen die Dateien gehören sollen; <uid:gid> bspw. durch "www:www" ersetzen.
    • "640": Das sind die Rechte, die den Dateien nach der Rotation gegeben werden.
    • "7": Dies bestimmt die Anzahl der Dateien, die erhalten werden sollen, zusätzlich zum Original (7 bedeutet also 7+1 Dateien)
    • "500": Das ist die Dateigrösse in MB die überschritten werden muss um die Dateien zu rotieren
    • "*": Anstelle des "*" kannst du auch ein Zeitintervall schreiben, wenn du bspw. jede Woche, unabhängig von der Dateigrösse rotieren möchtest. Das Format sieht so aus: $M1D0 = jeden ersten Tag des Monats, @T23 = jede Nacht um 23 Uhr
    • "Z": Bedeutet, dass die Dateien per gzip komprimiert werden sollen, alternativ kannst du auch bzip2 verwenden, dann müsstest du "J" schreiben. Hier gibt es noch mehr Parameter (bspw. RegEx), hierzu konsultiere bitte die man-pages.
    • "/var/run/lighttpd.pid": Pfad zum pid-File des entsprechenden Prozesses, um ein SIG-HUP bspw. nach dem Rotieren zu schicken.

  3. Wenn du nun die Konfiguration vorgenommen hast, musst du den Service einmal per

    # /etc/rc.d/newsyslogd restart

    neustarten. Sollte kein Syntaxerror vorliegen, wird ab jetzt dein Logfile rotiert.
Einen Kommentar hinzufügen

Einen Kommentar hinzufügen

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)
Code im diesem Bild:
Ihr Name(*):
Kommentar(*):