Logrotate ist eine in den meisten Linux-Distributionen vorinstallierte Software, mit der Sie die langfristige Speicherung und Organisation von Protokolldateien verwalten können.
Die Anwendungen im System zeichnen oft ein Protokoll über Disc-Operationen oder Probleme auf. Wenn diese Dateien nicht regelmäßig gelöscht werden, können sie an Größe zunehmen, die Festplatte füllen und Fehlfunktionen verursachen.
Logrotate ist die am weitesten verbreitete Lösung, um Protokolldateien regelmäßig zu überprüfen und ihre Rotation, Komprimierung und Löschung automatisch zu verwalten, wenn eine bestimmte Größe und/oder ein bestimmtes Alter überschritten wird.
Grundlegende Konfigurationen
Logrotate ermöglicht die Definition einiger grundlegender Parameter, die von allen nachfolgenden Konfigurationen der Datei im Pfad /etc/logrotate.conf verwendet werden:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
In diesem Auszug aus logrotate.conf wird neben der Anwendung aller oben beschriebenen Parameter auch empfohlen, alle im Verzeichnis /etc/logrotate.d vorhandenen Konfigurationen zu lesen. Auf diese Weise können Sie jede Konfiguration nach Anwendung und/oder Kontext aufteilen.
Logrotate-Konfigurationen definieren einen Regelsatz für 1 oder mehrere Dateien:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Ein klassisches Beispiel ist die Konfiguration von /var/log/messages:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Im obigen Beispiel wird nur die Nachrichtendatei berücksichtigt. . und seine Rotation wird jede Woche eingestellt, p auf maximal 5. Daher sind am Ende der fünften Rotation die Protokolldateien:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
Einige der wichtigsten Einstellungen sind:
täglich, monatlich, wöchentlich, jährlich:Gibt an, wie oft die Protokolldatei rotiert werden soll
compress, nocompress:ob alte Dateirotationen komprimiert werden sollen oder nicht
maxage:Nach wie vielen Tagen werden die alten Rotationen gelöscht
Größe:Legt die Drehung nur fest, wenn die angegebenen Dateien größer als die angegebene Größe sind. Suffixe können verwendet werden, um das Größenformat anzugeben (zB „k“ für Kilobyte, „M“ für Megabyte)
rotate:Anzahl der rotierten Protokolle, die gespeichert werden müssen, bevor sie dauerhaft entfernt werden. Wenn der Wert 0 ist, werden die Protokolldateien gelöscht, ohne rotiert zu werden.
Falls Sie dieselben Regeln für mehrere Dateien festlegen möchten, können Sie mehrere Pfade anhängen, indem Sie sie durch ein Komma trennen. Zum Beispiel:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Diese Konfiguration wird für die custom_log-Datei, alternative_log_file und another_log verwendet.
Alternativ können Sie Dateimasken verwenden wie:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
Verwendung der dateext-Einstellung
Die dateext-Einstellung ermöglicht es Ihnen, das Rotationsdatum an den Dateinamen anzufügen, damit Daten der Protokolle leicht erkannt werden können .
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
Die oben angegebene Konfiguration archiviert die Datei custom.log, sobald sie 100 MB erreicht, bis zu maximal 3 Mal oder nach 100 Tagen. Durch die Komprimierungsoption wird die archivierte Datei auch im gzip-Format komprimiert.
Nach der Rotation haben die Dateinamen das unten gezeigte Rotationsdatum:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
E-Mail-Protokolle
Logrotate ermöglicht es Ihnen, benutzerdefinierte Skripte auszuführen, wenn bestimmte Ereignisse eintreten, z. B. nach jeder Protokollrotation, indem Sie die Schlüsselwörter postrotate / endscript verwenden.
Eine mögliche Verwendung könnte darin bestehen, die Protokolle nach Abschluss der Rotation per E-Mail zu versenden. Um fortzufahren, erstellen Sie zunächst ein Skript, um die Dateien an Ihre E-Mail-Adresse zu senden:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Speichern Sie die obige Datei in Ihrem Home-Verzeichnis, zum Beispiel /home/map.com Benutzername_s//endend.sh, und stellen Sie sicher, dass Sie die erforderlichen Berechtigungen aktivieren durch:
# sudo chmod u+x /home/user/sendlog.sh
Bearbeiten Sie nun die Logrotate-Konfigurationsdatei wie folgt:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Speichern Sie die Konfiguration, um die Änderungen zu übernehmen.
Sobald Sie fertig sind, erhalten Sie bei jeder Log-Rotation eine E-Mail mit dem oben beschriebenen Log-Archiv.