Beitragsdatum | 06.12.2018 |
---|---|
Letzte Aktualisierung | - |
Betrifft | logrotate |
Ein Kunde meldete sich bei mir und berichtete, dass sein Server (Ubuntu 14.04 LTS) nicht mehr richtig laufen würde.
Ich meldete mich über ssh an und prüfte die Systemdaten (top
, free
usw.).
Schnell stellte ich fest, dass ein logrotate-Prozess seit langer Zeit den CPU zu fast 100% auslastete.
Ich prüfte die Funktion von logrotate mittel des Debug-Schalters:
logrotate -d /etc/logrotate.conf
Hier zeigte sich, dass logrotate sofort bei einer bestimmten Konfigfile hängen blieb.
Ich prüfte die Konfigfile und stellte fest, dass das Muster der zu rotierenden Logfiles falsch angegeben war. Es handelte sich dabei um eine vom Kunden angelegte Konfig für die Rotation der Logfiles der virtuellen Hosts für Apache.
# falsches Muster der zu rotierenden Logfiles: /var/www/vhosts/system/logs/*/*log* # Dieses Muster schließt nämlich die bereits rotierten Logfiles mit ein. # richtig: /var/www/vhosts/system/logs/*/*log /var/www/vhosts/system/logs/*/*log.webstat /var/www/vhosts/system/logs/*/*log.processed {
Dadurch entstanden im Laufe der Zeit zahlreiche rotierte Logfiles von rotierten Logfiles - rekursiv also. Das kostete nicht nur Unmengen an inodes, sondern zusätzlich Leistung und Speicher.
Beim Aufräumen nicht die logrotate-Status-Datei vergessen - siehe unten.
/var/lib/logrotate/status
) und löschte sie danach. Diese hatte eine beachtliche Größe von 273MB und über 1,8 Millionen Zeilen Länge erreicht logrotate -d /etc/logrotate.conf
) und ein echter Lauf ergaben: alles läuftQuellen:
Ähnliche Themen im blog:
logrotate, cpu, prozess