Wie verhindert man, dass die Log-Files die komplette Festplatte zumüllen?
Zu diesem Zweck gibt es Logrotate. Logrotate rotiert, komprimiert und verschickt Logfiles per Mail.
Dateien
/etc/logrotate.conf | Allgemeine Anweisungen, die global gelten. Hier werden alle Dateine aus dem Verzeichnis /etc/logrotate.d/ included |
/etc/logratate.d/ | Logfilespezifische Anweisungen |
Konfiguration
Konfiguriert wird dieser Dienst mit allen Dateien, die in /etc/logrotate.d/
stehen. Der Syntax dieser Dateien ist grundsätzlich folgender:
"Logdatei" { <Anweisungen> }
Dabei gilt, dass die Anweisungen von oben nach unten ausgeführt werden.
Die Anweisungen können wie folgt sein:
Anweisung | Beschreibung |
---|---|
compress | Rotierte Logfiles werden gepackt. |
compresscmd | Bestimmt das Betriebssystemkommando, mit dem die rotierten Logfiles gepackt werden sollen. Als Standard wird gzip verwendet. |
uncompresscmd | Bestimmt das Betriebssystemkommando, mit dem die rotierten Logfiles wieder ausgepackt werden sollen. Als Standard wird gunzip verwendet. |
compressext | Definiert die Dateinamenserweiterung der komprimierten Dateien. Als Standard wird die Dateinamenserweiterung des verwendeten Komprimierungsprogrammes verwendet. |
compressoption | Optionale Parameter für das Komprimierungsprogramm. |
copytruncate | Diese Option schneidet das originale Logfile ab, nach dem es kopiert wurde. Normalerweise wird das alte Logfile umbenannt und ein neues erstellt. Da es aber Applikationen gibt, die nicht dazu gezwungen werden können, ihr Logfile zu schließen, wurde diese alternative Möglichkeit geschaffen. Es kann bei diesem Vorgehen passieren, das einige Daten verloren gehen könnten. Außerdem hat die create - Direktive keine Wirkung mehr. |
create {Modus} {Benutzer} {Gruppe} | Direkt nach dem rotieren der Log-Datei werden die Dateiattribute entsprechend den Vorgaben gesetzt. |
daily | Die Logfiles werden täglich gesichert. |
dateext | Archivierte Version erhalten einen Datumsstempel anstatt einer laufenden Nummer. |
delaycompress | Mit dieser Option wird die zuletzt rotierte version nicht sofort komprimiert, sondern immer erst im nächsten Rotationszyklus. |
extension {ext} | Die rotierten Logfiles erhalten die entsprechende Dateinamenserweiterung. An diese Erweiterung wird aber noch ggf. die Erweiterung des Komprimierungsprogrammes angehängt. |
ifempty | Rotiert das Logfile auch dann, wenn es leer ist. (Standardeinstellung) |
include {datei_oder_verzeichnis} | Bindet die angegebene Konfigurationsdatei ein. Handelt es sich dabei um ein Verzeichnis, so werden alle in diesem Verzeichnis vorhandenen Dateien eingelesen. |
mail {Adresse} | Soll ein Logfile gelöscht werden, weil es die älteste Version ist (siehe bei rotate), so wird diese Datei zur angegebenen e-Mail Adresse versendet. |
mailfirst | Dieser Parameter macht nur in Verbindung mit dem Parameter mail Sinn. An Stelle der zu löschenden Datei, wird die gerade erstellte Datei verschickt. |
maillast | Dieser Parameter macht nur in Verbindung mit dem Parameter mail Sinn. An Stelle der gerade erstellte Datei wird die zu löschende Datei verschickt. (Standardeinstellung) |
maxage {Anzahl} | Löscht rotierte Logdateien nach der entsprechenden Anzahl von Tagen. |
missingok | Wenn das Logfile nicht vorhanden ist, dann wird keine Fehlermeldung erzeugt und mit der Verarbeitung fortgefahren. |
monthly | Monatliches rotieren der Logdateien. |
nocompress | Die rotierten Logdateien werden nicht komprimiert. |
nocopytruncate | Das entsprechende Logfile wird nach dem Kopieren nicht abgeschnitten. Die Option copytruncate wird damit überschrieben! |
nocreate | Neue Logdateien werden nach dem Verschieben nicht wieder erstellt. Die Option create wird damit überschrieben! |
nodelaycompress | Rotierte Logdateien werden sofort komprimiert. Die Option delaycompress wird damit überschrieben! |
nomail | Es werden keine Logfiles als e-Mail versandt. |
nomissingok | Wenn das Logfile nicht vorhanden ist, dann wird eine Fehlermeldung erzeugt. (Standardeinstellung) |
noolddir | Die rotierten Logdateien werden normalerweise in dem gleichen Verzeichnis abgelegt. |
nosharedscripts | Startet Scripte unter den Optionen prerotate und postrotate für jede angegebene Logdatei. (Dieses ist die Standardeinstellung und überschreibt die Option sharedscript. |
notifempty | Ein leeres Logfile wird nicht rotiert. Die Option ifempty wird damit überschrieben! |
olddir {Verzeichnis} | Alle rotierten Dateien werden in dem angegebenen Verzeichnis abgelegt. Es muß sich aber auf der gleichen Festplatte befinden. |
postrotate / endscript | Die Betriebssystemkommandos zwischen postrotate und endscript werden nach dem Rotieren des Logfiles ausgeführt. Die beiden Parameter müssen in einer eigenen Zeile stehen. |
prerotate / endscript | Die Betriebssystemkommandos zwischen prerotate und endscript werden vor dem Rotieren des Logfiles ausgeführt. Die beiden Parameter müssen in einer eigenen Zeile stehen. |
rotate {Anzahl} | Diese Option bestimmt die Anzahl der verfügbar gehaltenen rotierten Dateien. |
size {Größe} | Logfiles werden rotiert, wenn sie die angebene Größe in Bytes überschreiten. (100000 bedeutet 100000 Bytes, 100k bedeutet 100 KiloBytes und 10M bedeutet 10 MegaBytes) |
sharedscript | Normalerweiser werden die unter prerotate und postrotate definierten Prozeduren für jede einzelne Logdatei ausgeführt. Mit dieser Option werden diese Prozeduren aber nur einmal ausgeführt. |
weekly | Wöchentliches rotieren der Logdateien. |
Beispiele
/var/log/vsftpd.log { weekly rotate 4 compress notifempty missingok
Die Datei „/var/log/vsftpd.log“ soll behandelt werden
Diskussion