Benutzer:Amenophis86/Artikelentwurf
FHEM Überwachen ist ein Art, wie man z.B. auf einem Raspberry Pi seine FHEM installation überwachen kann. Die Überwachung spiegelt sich in diesem Sinne wieder, dass der FHEM Prozess automatisch neu gestartet wird, sobald er sich aufgehängt hat oder nicht mehr meldet. Für diese Überwachung gibt es verschiedene Methoden. Hier wird eine mittels eines FileLog und des Programms Monit dargestellt.
Zielsetzung
Ziel ist es, dass FHEM automatisch neu gestartet wird, sobald es sich aufgehängt hat.
Monit
Zuerst muss das Programm Monit installiert und konfiguriert werden. Wie ihr das macht, steht Hier.
Konfiguration in FHEM
Dummy anlegen
Wir legen uns einen Dummy mit dem Namen "Monit_timer" an. Dieser Timer wird später durch ein at immer wieder getriggert und der Dummy triggert daraufhin ein Filelog. Den Dummy legen wir uns wie folgt an:
define Monit_timer dummy
Wichtig, der Dummy darf NICHT das Attribut event-on-change-reading oder event-on-update-reading haben!
Filelog anlegen
Nun legen wir uns ein FileLog an, in welches später von FHEM immer wieder durch den Dummy eine Lebenzeichen eingetragen wird. Dies machen wir wie folgt:
define FileLog_WD_Monit FileLog ./log/Monit_timer.log Monit_timer*
At anlegen
Jetzt legen wir uns ein at an, welches alle 3 Minuten dem Dummy den Status 1 gibt:
Monit_exec at +*00:03:00 set Monit_timer 1
Notfiy bei Neustart
Nun noch ein Notify anlegen, welches uns den Dummy auf den Wert 2 setzt beim Start von FHEM. Dies würde wie folgt aussehen:
define FHEM_start notify global:INITIALIZED set Monit_timer 2
Hintergrund ist, dass so das FileLog direkt nach dem Start etwas schreibt und nicht erst nach 3 Minuten.
Leeren der des LogFile
Zuletzt definieren wir uns noch ein at, welches uns das Logfile jede Nacht, bis auf die letzten beiden Einträge leert. Das Logfile würde sonst unglaublich groß werden und das muss ja nicht sein.
define Monit_Log_leeren at *00:01:00 {system ("sudo tail -n 2 /opt/fhem/log/Monit_timer.log > /opt/fhem/log/Monit_timer_Dummy.log");; system ("sudo cp /opt/fhem/log/Monit_timer_Dummy.log /opt/fhem/log/Monit_timer.log");; system ("sudo rm /opt/fhem/log/Monit_timer_Dummy.log")}
Wichtig, FHEM muss den Befehl "sudo" ausführen können. Mehr dazu findet ihr im Forum
Konfiguration von Monit
Ans Ende der Datei Monitrc, welche normal unter /etc/monit/monitrc zufinden ist, tragen wir folgendes ein:
check file fhem with path /opt/fhem/log/Monit_timer.log start program "/etc/init.d/fhem start" stop program "/etc/init.d/fhem stop" if timestamp > 5 minute then restart
set daemon 120
Dies sollte so gelassen werden, das heißt, dass Monit alle 2 Minuten die Datein checkt.
Der Ablauf
FHEM schreibt alle 3 Minuten ins Filelog den Status 1. Nach einem Restart den Status 2. Monit überwacht alle 2 Minuten, ob das Filelog länger als 5 Minuten nicht bearbeitet wurde, ist dies der Fall wird FHEM neugestartet.
Meldung per Pushover
Wir können uns noch eine Mitteilung über Pushover senden lassen. Dies stellen wir wie folgt an: