Benutzer:Amenophis86/Artikelentwurf

Aus FHEMWiki
Version vom 17. März 2016, 23:52 Uhr von Amenophis86 (Diskussion | Beiträge) (Änderung zu FHEM Überwachung)

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

In 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