Optimiertes Log-Verhalten für openHAB
Da unser openHAB-System in einem RaspberryPi mit einer SD-Karte läuft, wollte ich einmal die Schreibzugriffe auf die Karte kontrollieren bzw. optimieren.
Die meisten Schreibzugriffe werden beim Logging durchgeführt. Hier habe ich gesehen, dass noch INFO-Meldungen protokolliert werden.
Den Tipp für die Deaktivierung der Loggings und damit einer längeren Lebensdauer habe ich bei getmob.de gelesen. Die komplette Dokumentation zum Logging in openHAB findet Ihr hier.
Konfiguration
Viele Log-Level sind bei openHAB im Standard auf „INFO“. Während des Aufbaus der Installation ist das auch interessant. Aber wer liest schon im laufenden produktiven Betrieb später noch Log-Dateien?
In meinem Fall führt auch jede Logausgabe zu einem Schreibzugriff auf der SD-Karte und damit zu einer verminderten Lebenszeit des Flash-Speichers.
Das Logging-Verhalten kann hier angepasst werden:
/var/lib/openhab2/etc/org.ops4j.pax.logging.cfg
Ich habe die folgenden Log-Level auf „WARN“ gestellt:
- org.openhab
- Alt: #log4j2.logger.openhab.level = INFO
- Neu: log4j2.logger.openhab.level = WARN
- org.eclipse.smarthome
- Alt: #log4j2.logger.smarthome.level = INFO
- Neu: log4j2.logger.smarthome.level = WARN
- smarthome.event
- Alt: #log4j2.logger.events.level = INFO
- Neu: log4j2.logger.events.level = WARN
Die Änderungen in der Konfiguration sollten ohne Neustart übernommen werden.
Fazit
Bei einem Neustart des Systems und im laufenden Betrieb sieht man wesentlich weniger Log-Meldungen. Damit sollten weniger Schreibzugriffe im Gesamtsystem vorhanden sein.
Leider sieht man jetzt auch keine Meldungen mehr vom KNX-Bus z.B. Licht geht an, Licht geht aus. Hier müsste ich vor einer tieferen Fehlersuche dann die Konfiguration wieder ändern (aber es sind ja nur ein paar Handgriffe im laufenden Betrieb).
Weiterführende Informationen
Hier gibt es noch einen weiteren Artikel über das Thema Logging – https://andreas.scherbaum.la/blog/archives/967-Avoid-wear-out-of-SSD-cards-in-an-openHAB-system.html
Dort wird auch beschrieben wie man die Log-Dateien auf eine RAM-Disk auslagern kann. Das dortige Beispiel basiert auf Ansible.
Hier auch noch einmal ein Tipp von Thomas zu dem Thema:
wir hatten mal über die Haltbarkeit der SD-RAM diskutiert. Ich hab da noch was entdeckt, was die „Resilience“ unterstützen kann.
https://github.com/azlux/log2ram
https://www.pcwelt.de/ratgeber/Raspberry-Pi-Schneller-dank-Logdateien-im-RAM-11047025.html
Ich hab es auf meinem Pi4 eingerichtet – klappt problemlos. Wenn man die Openhab Event-Logs aktiv hat, braucht man ZL2R oder 140MB ramdisk. Ich schreibe nur die openhab.log, dann kommt man mit 80MB ohne Komprimierung locker hin. Jetzt wird /var/log in die Ramdisk geschrieben und einmal täglich auf die SD-RAM kopiert. Das nimmt die Last deutlich von der SD-Karte. Der Pi4 hat genug RAM, um damit klar zu kommen.
Es hat noch einen anderen angenehmen Nebeneffekt. Ich hatte kürzlich keinen kleinen „Hickup“ auf meinem Raspi, wodurch die „daemon.log“ und „syslog“ innerhalb kurzer Zeit auf 7GB anwuchsen und die Kiste lahm gelegt haben. Mit log2ram kann man den Raspi nicht mit sich aufblähenden Logfiles an die Wand fahren oder gar die SD-RAM killen.