Aktionen

Logfiles in Logrotate aufnehmen - automatisches packen, rotieren und leeren von Logs

Aus znilwiki

Version vom 6. August 2017, 19:51 Uhr von BLinz2 (Diskussion | Beiträge) (Textersetzung - „<comments>“ durch „<comments />“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Nicht jedes Log wird automatisch "gewartet". Damit meine ich

  • Aufbewahren einer bestimmten Anzahl von Logs, z.B. die letzten 5
  • Regelmäßiges erzeugen einer neuen Log-Datei, "leeren" der alten Datei

Das ganze soll dem Zweck dienen das z.B. eine Festplatte nicht durch Logs vollläuft.

Unter Ubuntu kann das der Befehl

logrotate

den Ihr ggf. über ein

apt-get install logrotate

nachinstallieren müsst.

Um ein neues Logfile in die Rotation aufzunehmen bearbeiten wir die Konfigurationsdatei:

nano /etc/logrotate.conf

Und fügen unseren Wunsch am Ende an.
Nachfolgend schalte ich die Rotation für die Datei /var/log/mysql/slow-query.log ein:

# system-specific logs may be configured here

/var/log/mysql/slow-queries.log {
    weekly
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 660 mysql adm
}

Die möglichen Werte sind (nur die wichtigsten):

hourly / daily / weekly / monthly : Wie oft? stündlich / täglich / wöchentlich 
compress                          : Alte Log-Dateien komprimieren
delaycompress                     : Nur wirksam mit compress, schliesst das jeweils letzte Log aus der Kompression aus (so das man es noch direkt ansehen kann)
dateext                           : Hängt an die alten Logs ein JJJJMMTT mit dem Datum an
missingok                         : Auch bei fehlern (z.B. Datei nicht vorhanden) weitermachen
notifempty                        : Rotiert nur wenn die Datei nicht leer ist
rotate                            : Anzhal der Logdateien die behalten werden sollen
create 660 mysql adm              : mit welchem Rechten und Besitzer + Gruppe soll die Datei neu erstellt werden?

weitere Parameter auch unter

man logrotate



Nun müsste man abwarten bis logrotate unsere Datei abarbeitet ... oder wenn wir ungeduldig sind lassen wir es sofort seine arbeit tun:

logrotate -f /etc/logrotate.conf

Zum einen können wir es nun an unserem Logfile sehen:

-rw-rw----  1 mysql adm       0 Jul 26 07:40 slow-queries.log
-rw-rw----  1 mysql adm    1092 Jul 26 07:40 slow-queries.log.1

Zum anderen hat natürlich auch logrotate ein Logfile:

cat /var/lib/logrotate/status | grep slow-queries
"/var/log/mysql/slow-queries.log" 2014-7-26-7:40:24



--Bernhard Linz 07:53, 26. Jul. 2014 (CEST)


Loading comments...