Alle Apache Logs Rotieren mit Hilfe von newsyslog

In meiner kleinen Server Welt gibt es ein paar Apaches mit jeweils einigen VirtualHosts. Um ein wenig den Überblick zu behalten, schreibt jeder VirtualHost seine eigenen Logfiles. Da FreeBSD mit newsyslog(8) ein fähiges Tool zum rotieren der Logfiles mitbringt, nutzen wir einfach selbiges. In diesem kurzen Artikel beschreibe ich wie.

Apache-Logs schreiben

Na das ist eigentlich Off-Topic, aber dennoch. Ich für meinen Teil lasse alle VirtualHosts und auch den Hauptserver Logdateien in das Verzeichnis /var/log/apache24/ schreiben. Das sieht dann zum Beispiel so aus:

1
2
3
4
5
6
7
8
9
10
<VirtualHost *:443>
ServerName www.example.org
ServerAlias example.org
ServerAdmin webmaster@example.org
DocumentRoot "/usr/local/www/wordpress"
ErrorLog "/var/log/apache24/example.org-error.log
CustomLog "
/var/log/apache24/example.org-access.log" combined

Include etc/apache24/Includes/ssl.inc
</VirtualHost>

 

Newsyslog.conf

Newsyslog(8) ist im Basesystem von FreeBSD. Das heißt, jedes Mal wenn man das System updateted, läuft der mergemaster auch über dessen Config files. Abhilfe dafür schafft die Möglichkeit Configs zu includen. Wir legen also unter  /usr/local/etc/newsyslog.conf.d ein neues file Names apache24 an mit folgenden Inhalt:

1
2
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/apache24/*.log www:www 440 12 * $M1D0 GZ /var/run/httpd.pid 30

Kurz gesagt: newsyslog…

  1. Rotiert alle .log files im Verzeichnis.
  2. Schenk die rotierten dann dem User www und der Gruppe www.
  3. Setzt die Permissions so, dass eben diese das auch lesen können (mode).
  4. Das ganze passiert 12 Mal (count) (Man hat also das aktuelle Logfile plus 12 alte.).
  5. Die Größe ist egal *(size).
  6. $M1D0 (when) sagt aus: Rotiere jeden 1 Tag im Monat um 0 Uhr.
  7. Das GZ ist folgendes: G macht das * im Dateinamen möglich, Z nimmt bzip zum packen.
  8. Wenn das passiert ist, schickt es einen graceful restart 30 an den Prozess mit der PID in /var/run/httpd.pid

Das wars… Nagut… ein service newsyslog restart fehlt noch, aber schon werden alle Logfiles in der Nacht zum ersten rotiert…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.