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 Sekundenset httpd port 2812 and
#schaltet Webserver auf Port 2812 frei
#erlaubt die Anmeldung an der Website für Benutzer admin mit Passwort monit
allow admin: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
Quellen
- blog.doenselmann.com – Raspberry Pi für Dauereinsatz optimieren
- diode.io – RUNNING FOREVER WITH THE RASPBERRY PI HARDWARE WATCHDOG
- forum.z-wave.me – Automatic restart