IT-MÜCKE

Logrotate erzeugt nahezu 100% Last

Beitragsdatum 06.12.2018
Letzte Aktualisierung -
Betrifft logrotate

Problem

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.


Ursache

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.


Lösung

Beim Aufräumen nicht die logrotate-Status-Datei vergessen - siehe unten.

  • Zuerst sicherte ich die Logfiles in einer gepackten Datei.
  • Dann löschte ich alle Logfiles.
  • Ich sicherte zusätzlich die Status-Datei von logrotate (/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 8-O Jede Logfile wird dort mit Datum der letzten Rotation aufgeführt. Bei dieser Größe erzeugt das Lesen der Datei bereits 100% CPU-Last für lange Zeit…
  • Anschließend reparierte ich die Konfig, wie oben beschrieben.
  • Abschließende Tests (logrotate -d /etc/logrotate.conf) und ein echter Lauf ergaben: alles läuft

Quellen:


Ähnliche Themen im blog:
logrotate, cpu, prozess


zurück