Einrichten von logrotate auf Centos 7
Gestern bin ich auf das Problem der geringen Kapazität der /var/log/-Partition gestoßen. Einige Logs waren zu groß und logrotate ist das perfekte Werkzeug, um dieses Problem zu lösen. Es ist eine Software, die entwickelt wurde, um den Speicherplatz für jede Log-Datei, die wir haben, zu reduzieren. Und das kann man auf verschiedene Weise tun.
Logrotate Beschreibung: logrotate wurde entwickelt, um die Verwaltung von Systemen zu erleichtern, die eine große Anzahl von Log-Dateien erzeugen. Es ermöglicht das automatische Rotieren, Komprimieren, Entfernen und Versenden von Logdateien. Jede Logdatei kann täglich, wöchentlich, monatlich oder wenn sie zu groß wird, bearbeitet werden.
Normalerweise wird logrotate als täglicher Cron-Job ausgeführt. Es wird ein Protokoll nicht mehrmals an einem Tag ändern. In wenigen Worten: logrotate reduziert den Speicherplatzverbrauch auf der Festplatte durch Protokolldateien.
Logrotate-Konfiguration
Die Konfiguration von logrotate wird in einer Hauptdatei vorgenommen: /etc/logrotate.conf und weitere dienstspezifische Konfigurationsdateien, die in /etc/logrotate.d/
Die wichtigste Beispielkonfiguration ist also:
# see "man logrotate" for details# rotate log files weekly specified in /etc/logrotate.d/weekly# keep 4 weeks of all log filesrotate 4# create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed by gzipcompress# RPM packages drop log rotation information into this directory#there are all other configurations of services and their logs to rotateinclude /etc/logrotate.d
Einige Beispiele und reale Konfigurationen von Logdateien
So können wir eine neue Logdatei in /var/log/ auf diese Weise hinzufügen:
echo "this is a sample log file" > /var/log/vasil.log#this create a log file vasil1.log of size 5MBdd if=/dev/zero of=/var/log/vasil1.log bs=1M count=5
Als Nächstes erstellen wir eine neue Konfigurationsdatei, die im oben erläuterten Ziel gespeichert wird:
vim /etc/logrotate.d/vasil###/var/log/vasil.log { missingok notifempty compress minsize 1M daily create 0600 root root}
vim /etc/logrotate.d/vasil1###/var/log/vasil1.log { missingok notifempty compress minsize 1M daily create 0600 root root}
Und eine Erklärung der Variablen:
- missingok – keinen Fehler ausgeben, wenn die Logdatei fehlt
- notifempty – Logdatei nicht rotieren, wenn sie leer ist
- compress – Alte Versionen von Logdateien werden standardmäßig mit gzip komprimiert
- minsize – Log Datei wird nur rotiert, wenn sie größer als 1M ist
- daily – sorgt für tägliche Rotation
- create – erstellt eine neue Logdatei mit den Rechten 600, wobei Eigentümer und Gruppe der Root-Benutzer ist
Wenn Sie mehr Optionen und deren Erklärung wollen, schauen Sie ins Handbuch:
man logrotare
Schauen Sie sich die Liste von /var/log für unsere Protokolldateien an. Wir können sehen, dass wir ein Log vasil.log mit einer Größe von 26b und vasil1.log mit einer Größe von 5MB haben.
ls -lah /var/log/va*-rw-r--r--. 1 root root 5.0M Mar 3 13:21 /var/log/vasil1.log-rw-r--r--. 1 root root 26 Mar 3 13:21 /var/log/vasil.log
Nun können wir unsere Konfiguration mit diesem Befehl debuggen:
logrotate -d /etc/logrotate.d/vasil1orlogrotate -d /etc/logrotate.d/vasil
Wenn wir also logrotate manuell ausführen und sehen wollen, was passiert, führen Sie den folgenden Befehl aus. Aber Vorsicht, denn es rotiert alle Ihre Logs, die in /etc/logrotate.d/
logrotate -f /etc/logrotate.conf
Und wir können sehen, dass beide Logdateien komprimiert und zwei neue leere Logdateien erstellt wurden:
ls -lah /var/log/va*-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil1.log-rw-r--r--. 1 root root 5.0K Mar 3 13:21 /var/log/vasil1.log-20170303.gz-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil.log-rw-r--r--. 1 root root 44 Mar 3 13:21 /var/log/vasil.log-20170303.gz
Wir können unsere komprimierten Logdateien mit diesem Befehl einsehen:
zcat /var/log/vasil.log-20170303.gzthis is a sample log file
Oder wir können sie mit dem Befehl gzip dekomprimieren.
Wenn wir Logrotate verwenden, müssen wir manchmal eine Anwendung oder einen Dienst neu starten. Logrotate kann das mit einem Skript namens „postrotate“ erledigen. Dieses Skript kann in einer Konfigurationsdatei wie httpd verwendet werden. Wenn das Log rotiert wird, lädt das Skript den Dienst neu, um die neue leere Logdatei zu verwenden.
cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}
So hoffe ich, dass diese Anleitung jemandem hilft 🙂 Viel Spaß.