Drücken sie Ctrl/Cmd + P zum drucken
oder zum Speichern als PDF.

Raspberry Pi: Reibungsloser Betrieb mit Watchdog & Co

Um den 24/7 Betrieb einen Raspberry Pi sicherstellen zu können, ist es sinnvoll zu überprüfen ob dieser noch richtig arbeitet um ihn ggf. automatisch neu starten zu lassen. Diese Aufgabe übernimmt Programme wie Watchdog oder Monit.

Beide können die Funktionen von anderen Komponenten oder Diensten überwachen. Über eine Konfigurationsdatei kann dabei festgelegt werden, was alles überwacht werden soll. Mittlerweile ist Watchdog als Hardware Komponente in den Raspberry Pi integriert und muss nur noch eingerichtet werden.

Monit bietet über eine Website die Möglichkeit den Status der überwachten Dienste anzeigen zu lassen.

Voraussetzungen

  • Rasperry Pi 4

Watchdog

Einrichtung

  • Installation
    sudo apt-get update
    sudo apt-get install watchdog
  • Konfiguration
    sudo nano /etc/watchdog.conf
  • Zeilen auskommentieren
    # gibt das Device an was zu Überprüfung des Systemstatus herangezogen wird (default)
    watchdog-device = /dev/watchdog
    # ist die Last des RP für eine Minute höher als 24% wird der RP neu gestartet
    max-load-1 = 24
    # verhindert bei der systemd Statusabfrage von Watchdog ein Timeout Fehler
    watchdog-timeout=15
  • Logfile
    sudo nano /var/log/watchdog/watchdog.log

Watchdog starten

  • sudo systemctl enable watchdog
  • sudo systemctl start watchdog
  • Status von Watchdog überprüfen
    sudo systemctl status watchdog

Test mit einer „Logikbombe“

  • um die Funktion von Watchdog zu testen, kann man mit folgendem Befehl die Überlastung vom System provozieren
    sudo bash -c ':(){ :|:& };:'
  • sollte Watchdog dem RP nicht automatisch neu starten, muss dies per Hand erledigt werden!

Dienste überwachen und neu starten

  • um einzelne Dienste auf dem RP zu überwachen, und ggf. neu zu starten, müssen diese entsprechend konfiguriert sein
  • zu erst prüfen wir am Beispiel von OpenHAB, ob der Dienste läuft und wie der genaue Name lautet
    systemctl list-units --type=service
  • anschließend kann der Dienst angepasst werden
    sudo systemctl edit –full openhab.service
  • dazu wird im Abschnitt [Service] wird nun die Neustart Option eingetragen
    Restart=on-failure
  • anschließend müssen wir die Dienste neu laden und den Dienst openHAB neu starten
    sudo systemctl daemon-reload
    sudo systemctl start openhab.service

Fehlermeldungen / Errorcodes (watch_err.h)

  • – 0 /* no error
  • 255 /* unconditional reboot
  • 254 /* unconditional hard reset
  • 253 /* load average too high
  • 252 /* too hot inside
  • 251 /* /proc/loadavg contains no data
  • 250 /* file wasn’t changed in the given interval
  • 249 /* /proc/meminfo contains invalid data
  • 248 /* child was killed by signal
  • 247 /* child didn’t return in time
  • 246 /* reserved for user error code
  • 245 /* unknown, not „no error“ (i.e. success) but implies test still running */

Monit

Einrichtung

  • Installation
    sudo apt-get install monit
  • Konfiguration
    sudo nano /etc/monit/monitrc
    set daemon 120 #prüft Dienste alle 120 Sekunden
    set httpd port 2812 and #schaltet Webserver auf Port 2812 frei
    allow admin:monit
    #erlaubt die Anmeldung an der Website für Benutzer admin mit Passwort monit
  • externe Config Files werden ebenfalls unterstützt, hier am Beispiel der Überwachung des z-way-server Dienstes
    sudo nano /etc/monit/conf.d/z-way-server'
    check process z-way-server with match z-way-server
    start program = "/etc/init.d/z-way-server start"
    stop program = "/etc/init.d/z-way-server stop"

    sudo monit reload
  • Monit wird den Z-Way-Server jetzt automatisch neu starten, falls dieser nicht läuft
  • Überprüfung der laufenden Dienste
    http://IP-Adresse-RAspberry:2812
  • Logfile
    sudo nano /var/log/monit.log
Monit Übersicht

Quellen