Logrotate ist ein Dienstprogramm, das für Administratoren entwickelt wurde, die Server verwalten, die eine große Menge an Protokolldateien produzieren, um ihnen zu helfen, etwas Festplattenplatz zu sparen und um das potenzielle Risiko zu vermeiden, dass ein System aufgrund von mangelndem Festplattenplatz nicht mehr reagiert. Normalerweise besteht eine Lösung zur Vermeidung dieser Art von Problemen darin, eine separate Partition oder ein logisches Volume für einen /var-Einhängepunkt einzurichten. Allerdings kann logrotate auch eine brauchbare Lösung für dieses Problem sein, besonders wenn es zu spät ist, alle Logs auf eine andere Partition zu verschieben. In diesem Artikel werden wir über die Verwendung und Konfiguration von logrotate auf RedHat / CentOS Linux-Servern sprechen.
Was ist Logrotate
Logrotate bietet einem Systemadministrator die Möglichkeit, systematisch alle vom System erzeugten Protokolldateien zu rotieren und zu archivieren und so den Speicherplatzbedarf eines Betriebssystems zu reduzieren. Standardmäßig wird Logrotate einmal am Tag mit einem Cron-Scheduler aus dem Verzeichnis /etc/cron.daily/
# ls /etc/cron.daily/
cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
Konfiguration von Logrotate
Die Konfiguration von Logrotate erfolgt durch die Bearbeitung zweier separater Konfigurationsdateien:
- /etc/logrotate.conf
- Dienstspezifische Konfigurationsdateien, die in /etc/logrotate.d/.
Die Hauptdatei logrotate.conf enthält eine generische Konfiguration. Hier ist eine Standard-Logrotate-Konfigurationsdatei logrotate.conf:
1 weekly 2 rotate 4 3 create 4 dateext 5 include /etc/logrotate.d 6 /var/log/wtmp { 7 monthly 8 create 0664 root utmp 9 minsize 1M 10 rotate 1 11 }
- Zeile 1 – wöchentliche Konfigurationsoption sorgt für eine wöchentliche Rotation aller in der Hauptkonfigurationsdatei und im Verzeichnis /etc/logrotate.d/ definierten Log-Dateien.
- Zeile 2 – rotate 4 sorgt dafür, dass logrotate eine 4-wöchige Sicherung aller Log-Dateien aufbewahrt
- Zeile 3 – create Option weist logrotate an, nach jeder Rotation neue leere Log-Dateien anzulegen
- Zeile 4 – dateext hängt an alle rotierten Log-Dateien eine Erweiterung in Form des Datums an, wann die jeweilige Log-Datei von logrotate verarbeitet wurde
- Zeile 5 – alle anderen Konfigurationen aus dem Verzeichnis /etc/logrotate.d
- Zeile 6 – 11 enthält eine spezifische Dienstkonfiguration für die Logrotation
Im Gegensatz zu logrotate.conf enthält das Verzeichnis /etc/logrotate.d/ eine spezifische Dienstkonfiguration, die von logrotate verwendet wird. Im nächsten Abschnitt erstellen wir eine Beispielkonfiguration für logrotate.
Abonnieren Sie RSS und NEWSLETTER und erhalten Sie aktuelle Linux-News, Jobs, Karrieretipps und Tutorials.
Neue Dienstprotokolle zu logrotate hinzufügen
In diesem Abschnitt werden wir eine neue Protokolldatei zu einer logrotate-Konfiguration hinzufügen. Nehmen wir an, wir haben eine Protokolldatei mit dem Namen:
/var/log/linuxcareer.log
im Verzeichnis /var/log, die täglich rotiert werden muss. Zuerst müssen wir eine neue logrotate-Konfigurationsdatei erstellen, um unsere neue Protokolldatei unterzubringen:
$ vi /etc/logrotate.d/linuxcareer
Fügen Sie den folgenden Text in /etc/logrotate ein.d/linuxcareer:
/var/log/linuxcareer.log {
missingok
notifempty
compress
size 20k
daily
create 0600 root root
}
Hier ist eine zeilenweise Erklärung der obigen logrotate-Konfigurationsdatei:
TIP: Wenn Sie mehrere Protokolldateien in eine einzige Konfigurationsdatei aufnehmen möchten, verwenden Sie Platzhalter. Zum Beispiel wird /var/log/mylogs/*.log log logrotate anweisen, alle Protokolldateien zu rotieren, die sich in /var/log/mylogs/ mit der Endung .log befinden.
- missingok – keinen Fehler ausgeben, wenn die Logdatei fehlt
- notifempty – die Logdatei nicht rotieren, wenn sie leer ist
- compress – Alte Versionen von Logdateien werden standardmäßig mit gzip(1) komprimiert
- size – die Logdatei wird nur rotiert, wenn sie größer als 20k ist
- daily – sorgt für tägliche Rotation
- create – erstellt eine neue Logdatei mit den Rechten 600, wobei Eigentümer und Gruppe der Benutzer root ist
Das Dienstprogramm logrotate ist sehr vielseitig, da es viele weitere Konfigurationsoptionen bietet. Im Folgenden werde ich einige weitere Konfigurationsoptionen für logrotate auflisten. Um eine vollständige Liste zu erhalten, konsultieren Sie die Handbuchseite von logrotate:
$ man logrotate
- copy – Erstellen Sie eine Kopie der Protokolldatei, aber verändern Sie das Original überhaupt nicht.
- mail <email@address> – Wenn ein Protokoll nicht mehr vorhanden ist, wird es an die Adresse geschickt.
- olddir <directory> – Logs werden zur Rotation in <directory> verschoben.
- postrotate/endscript – Die Zeilen zwischen postrotate und endscript werden ausgeführt, nachdem die Protokolldatei rotiert wurde.
Testen einer neuen Logrotate-Konfiguration
Sobald Sie eine neue Logrotate-Konfigurationsdatei in /etc/logrotate erstellt haben.d:
Erstellen Sie eine Beispiel-Logdatei (falls nicht vorhanden!):
# echo "rotate my log file" > /var/log/linuxcareer.log
Nachdem Sie Ihre Logdatei erstellt haben, zwingen Sie logrotate, alle Logs mit der Option -f zu rotieren.
# logrotate -f /etc/logrotate.conf
Warnung: Der obige Befehl rotiert alle Ihre Logs, die im Verzeichnis /etc/logrotate.d definiert sind.
Nun besuchen Sie erneut Ihr /var/log/Verzeichnis und bestätigen Sie, dass Ihre Logdatei rotiert und eine neue Logdatei erstellt wurde:
Wie Sie sehen können, wurde die neue leere Logdatei linuxcareer.log erstellt und die alte Datei linuxcareer.log mit gzip komprimiert und mit der Datums-Erweiterung umbenannt.
TIP: Um den Inhalt Ihrer komprimierten Log-Datei zu sehen, müssen Sie sie nicht erst dekomprimieren. Verwenden Sie die Befehle zcat oder zless, die Ihre Logdatei im Handumdrehen dekomprimieren.
Fazit
Wie bereits erwähnt, ist der beste Weg, um zu vermeiden, dass Ihr System durch Logdateien verstopft wird, das Anlegen einer separaten Partition/eines separaten logischen Volumes für Ihr /var/ oder noch besser /var/log-Verzeichnis. Aber auch dann kann logrotate Ihnen helfen, etwas Speicherplatz zu sparen, indem es Ihre Logdateien komprimiert. Logrotate kann Ihnen auch helfen, Ihre Logdateien für eine spätere Verwendung zu archivieren, indem es eine zusätzliche Kopie erstellt oder Ihnen neu rotierte Logdateien per E-Mail zusendet. Weitere Informationen finden Sie auf der Handbuchseite von logrotate:
$ man logrotate