logrotate – rotate the log

Was ist logrotate?

Logrotate „rotiert, komprimiert und mailt Systemlogs. Dadurch existiert nur eine begrenzte Anzahl an Logfiles. Jeden Monat z.B. wird das älteste Logfile gelöscht und dafür ein neues angelegt. Der Vorteil darin: Logfiles werden nicht zu groß (und unhandlich). Die Festplatten werden damit auch davor bewahrt still und heimlich voll zu laufen, weil der Admin mal wieder vergessen hat Logfiles von vor 5 Jahren zu löschen.

Das Configfile:

In der Regel ist die Konfigurationsdatei unter dem Pfad „/etc/logrotate.conf“ anzutreffen.

Hier der 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

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}

# system-specific logs may be configured here

Definiert werden Defaultwerte. Die englischen Kommentare sollten selbsterklärend sein.

Installation von Logrotate:

Logrotate legt einen Cronjob an (/etc/cron.daily). Dieser wird einmal in der Nacht ausgeführt.

Unter Debian (lenny):

Über das APT lässt sich logrotate ohne Probleme installieren. Hier reicht folgender Code aus:

sudo apt-get install logrotate

Unter CentOS (5.5):

sudo yum install logrotate

Eigene Pakete erstellen:

Eigene Pakete zu erstellen ist sehr einfach. Es muss lediglich eine Datei unter /etc/logrotate.d/ abgelegt werden.

Ein Paket ist sehr einfach Aufgebaut. In dem Manual sind verschiedene Beispiele und Optionen aufgeführt:

# sample logrotate configuration file
compress

/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}

"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}

/var/log/news/news.crit {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
endscript
nocompress
}

Die Logfiles, welche rotiert werden sollen, werden mit Pfadangabe und Regular Expression  angegeben. Die Optionen dazu folgen dann in geschweiften Klammern ({ & }). Dabei muss darauf geachtet werden, alte, schon rotierte Logfiles nicht wieder mit zu rotieren (dadurch können sich Endlosschleifen bilden).

Ein Beispiel:

„/var/log/apache2/*“ nimmt alle Logfiles. Auch die schon rotierten Logfiles (log.1). Korrekt währe „/var/log/apache2/*.log“ um alle alten Logfiles auszuschließen.

Optionen:

Hier ein paar oft genutzte Funktionen für logrotate:

compress:

Alte Logfiles werden mit gzip komprimiert. (Siehe auch nocompress, compresscmd)

compresscmd:

Definiert, mit was Logfiles komprimiert werden sollen (Default: gzip).

compressext:

Definiert die Endung des Komprimierten Logfiles (Default: .gz).

create (mode  owner group):

Erstellt ein neues Logfile, nachdem das alte rotiert wurde. Mode gibt die Rechte der Datei mit Oktalem Wert an (wie chmod). Owner und Group gibt User und Gruppenzugehörigkeit an.

Diese Option kann mit der Option nocreate deaktiviert werden.

daily

Logfiles werden Täglich rotiert.

Siehe auch: monthly, weekly

monthly

Rotiert die Logfiles jeden Monat

weekly

Rotiert die Logfiles jede Woche

rotate (count)

Rotiert Logfiles „count“ (Dezimal) oft. Mit „rotate 6“ werden Logfiles also 6x Rotiert bevor das älteste dann gelöscht wird.

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload the CAPTCHA.