FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: hexenmeister am 20 August 2018, 21:29:02

Titel: Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 20 August 2018, 21:29:02
Aus der Idee aus dem Forum (https://forum.fhem.de/index.php/topic,85231.0.html) entstanden und nach einer Testphase ins Repo eingecheckt (ab morgen per Update).

Das Modul erlaubt (mit einem passenden systemd-Script) eine Überwachung von FHEM mit Linux-systemd-Mitteln. Wird sich die FHEM-Instanz nicht innerhalb einer definierten Zeit melden (in Folge eines Abstutzes, 'Hängers' etc.), wird FHEM von systemd automatisch beendet und neu gestartet. Damit wird das System ein wenig robuster im Dauerbetrieb. Dennoch sollte man den Fällen, in denen der Watchdog zuschlägt, tunlichst nachgehen und die Problemursachen beseitigen.

Damit das funktioniert, muss FHEM unter der Kontrolle von systemd laufen und der Watchdog muss korrekt konfiguriert sein.
Folgendes Script kann dafür benutzt werden:
[Unit]
Description=FHEM Home Automation
Requires=network.target
#After=network.target
After=dhcpcd.service

[Service]
Type=forking
NotifyAccess=all
User=fhem
Group=dialout
# Run ExecStartPre with root-permissions
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/run/fhem
ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem
# Run ExecStart with defined user and group
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
TimeoutStartSec=240
TimeoutStopSec=120
#ExecStop=/usr/bin/pkill -U fhem perl
ExecStop=/usr/bin/pkill -f -U fhem "fhem.pl fhem.cfg"
# Restart options: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always.
Restart=on-failure
RestartSec=3
WatchdogSec=180
PIDFile=/var/run/fhem/fhem.pid

[Install]
WantedBy=multi-user.target

Das Script kann unter "/etc/systemd/system/fhem.service" angelegt werden.
Mit "sudo systemctl daemon-reload" wird sysgtemd-Konfiguration erneuert.
Anschliessend kann FHEM mit folgendem Befehl gestartet werden: "sudo systemctl start fhem.service".
Wenn in dem Script "Type=notify" verwendet wird, muss global Attribute "nofork=1" gesetzt sein.
attr global nofork 1
Bei "Type=forking" muss in Script der korrekte Pfad zu dem PID-Datei angegeben werden, diese Datei muss auch in FHEM mit dem global Attribute "pidfilename" aktiviert sein.
attr global pidfilename /var/run/fhem/fhem.pid

Die Definition für das Modul in FHEM ist sehr simpel und sollte vor dem aktivieren von Watchdog erstellt werden (save nicht vergessen!)

define <name> systemd_watchdog

Das war's auch schon. Viel Erfolg!

Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: wibi_ am 22 August 2018, 18:14:35
Servus,
vielen Dank für das Modul und die Anleitung! Ist genau das was ich gesucht habe, nachdem mein Garten einige Tage während meiner Abwesenheit trocken geblieben ist.

Etwas ist mir noch aufgefallen: Kann es sein, dass ein "shutdown restart" im FHEM Eingabefenster jetzt nur noch den Shutdown macht?
Ist aber eigentlich kein Prolem, wenn man das weiß. Kann ja FHEM auch wieder mit systemctl starten oder einfach einen reboot machen.

Gruß
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 22 August 2018, 22:00:58
Moin, moin,

wie beschrieben, die Idee und die Funktionalität ist nicht von mir, ich habe nur das Ganze etwas bequemmer in ein Modul verpackt. Aber ich freue mich natürlich, dass das Modul jemandem nützlich ist :)
Bin dennoch kein Experte, was systemd angeht.
Bei mir verhält sich etwas anders. Egal, ob 'shutdown', oder 'shutdown restart', FHEM wird beendet und sofort vom systemd neu gestartet. Stört mich nicht weiter, soll ja auch immer laufen. Beenden kann ich auch mit systemctl.
Läuft bei Dir das Modul sonst wie gewünscht? Nach Abschuss von FHEM, nach deaktivieren/löschen des Modulinstanz oder nach einem simulierten Hänger startet nach der Wartezeit brav neu?
Arbeitest du mit forking oder mit notify?

Grüße
Alexander
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: wibi_ am 24 August 2018, 19:44:18
Hallo Alexander,

bin leider auch kein systemd - Experte. Ich habe fhem.service mit Type=forking und dem von mir oben beschriebenen Verhalten laufen.
Habe zwischenzeitlich auch mal mit Type=oneshot und RemainAfterExit=yes, sowie mit ExecReload=... wie hier beschrieben https://forum.fhem.de/index.php/topic,25706.0.html (https://forum.fhem.de/index.php/topic,25706.0.html) experimentiert - brachte aber auch nicht den gewünschten Erfolg.
Nach dem Abschuß (kill) von FHEM funktioniert alles wunderbar.
Was mich allerdings interessieren würde ist, wie ich einen Hänger von FHEM simulieren kann? Damit habe ich mich noch überhaupt nicht beschäftigt. Bin froh, wenn's läuft...

Gruß Harry

Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 24 August 2018, 20:17:06
Zitat von: wibi_ am 24 August 2018, 19:44:18
Was mich allerdings interessieren würde ist, wie ich einen Hänger von FHEM simulieren kann? Damit habe ich mich noch überhaupt nicht beschäftigt.

Nichts leichter als das ;D
sleep 300
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: wibi_ am 25 August 2018, 14:17:40
Hallo Alexander,

nach einigem Testen funktioniert das bei mir jetzt auch mit dem "sleep-Hänger". Ein Problem hatte ich mit der ExecStop Zeile der Unit. Diese lief bei mir auf einen Fehler.
Nachdem ich ExecStop wie folgt geändert habe, funktioniert der Watchdog jetzt auch beim sleep:

ExecStop=/usr/bin/pkill -f -x fhem.pl

Und wenn die ExecStartPre - Zeile noch um ein -p ergänzt wird, unterdrückt das die Fehlermeldung, wenn das Verzeichnis /var/run/fhem schon existiert - ist aber nur Kosmetik.

ExecStartPre=-/bin/mkdir -p /var/run/fhem

Danke nochmal für dieses Modul und deine Arbeit!

Gruß Harry


Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 25 August 2018, 20:21:17
Gute Idee mit mkdir mit -p !
Danke, habe Commandref entsprechend geändert.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Edi77 am 04 Dezember 2018, 18:44:37
Ich hätte da mal noch eine Frage

Irgendwo habe ich hier mal gelesen das unter ./contrib/init-scripts/fhem.service existieren würde, was bei mir nicht so ist.
Dann habe ich mal geschaut wo überall die fhem.service auf meinem liegt


root@ubuntu-FHEM:/# find -name fhem.service
./run/systemd/generator.late/graphical.target.wants/fhem.service
./run/systemd/generator.late/multi-user.target.wants/fhem.service
./run/systemd/generator.late/fhem.service
./var/lib/lxcfs/cgroup/pids/system.slice/fhem.service
./var/lib/lxcfs/cgroup/blkio/system.slice/fhem.service
./var/lib/lxcfs/cgroup/devices/system.slice/fhem.service
./var/lib/lxcfs/cgroup/cpu,cpuacct/system.slice/fhem.service
./var/lib/lxcfs/cgroup/memory/system.slice/fhem.service
./var/lib/lxcfs/cgroup/name=systemd/system.slice/fhem.service
./sys/fs/cgroup/pids/system.slice/fhem.service
./sys/fs/cgroup/blkio/system.slice/fhem.service
./sys/fs/cgroup/devices/system.slice/fhem.service
./sys/fs/cgroup/cpu,cpuacct/system.slice/fhem.service
./sys/fs/cgroup/memory/system.slice/fhem.service
./sys/fs/cgroup/systemd/system.slice/fhem.service
./sys/fs/cgroup/unified/system.slice/fhem.service


Daher die Frage, ist "/etc/systemd/system/fhem.service" das immer noch der richtige Ort?

Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 04 Dezember 2018, 19:10:07
systemd kann selbst den script an die richtige Stelle verlinken. Habe ein wenig dazu schon mal geschrieben http://s6z.de/cms/index.php/homeautomation-homecontrol/softwareplattformen/fhem/142-fhem-watchdog-mit-systemd
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: carlos am 06 Dezember 2018, 17:31:12
Hallo,
Ich habe mr den Watchdog jetzt auch mal eingerichtet.
Ich kriege jetzt aber gar nicht mit ob und wann der watchdog zugeschlagen hat.
Im log sieht man es schon, aber wenn man das im watchdog device noch sehen könnte wäre cool.
Ist das machbar?
Gruß
Carlos
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Edi77 am 06 Dezember 2018, 17:37:36
Du kannst dir z.B. eine EMail schicken lassen  ;)


define SendMail_fhemstart notify global:INITIALIZED|REREADCFG sleep 30;; {DebianMail('aaaa@bbbbb.com','>>>>> FHEM REBOOT <<<<<','>>>>> FHEM REBOOT <<<<<')}
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 06 Dezember 2018, 22:08:30
Zitat von: carlos am 06 Dezember 2018, 17:31:12
Ich kriege jetzt aber gar nicht mit ob und wann der watchdog zugeschlagen hat.
Im log sieht man es schon, aber wenn man das im watchdog device noch sehen könnte wäre cool.
Ist das machbar?

Schwierig. Man kann natürlich den Startzeitpunkt protokollieren. Aber den Grund nicht wirklich zuverlässig. Wenn der WD zuschlägt, wird FHEM hart beendet (weil ja eh vermutlich schon hängt). Da kann man schlecht etwas zuverlässig speichern.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 19 Januar 2019, 17:16:33
Hallo Alexander,
wollte den Watchdog installieren, aber irgend etwas läuft bei mir schief.
Nach der Installation wie im ersten Post oder auf deiner Homepage ist
FHEM nicht mehr erreichbar.
Auszug aus dem Log-File.


2019.01.19 16:46:54 3: deCONZ: websocket: Switching Protocols ok
2019.01.19 16:49:01 1: Watchdog Client: systemd watchdog is not available. Module inactiv.
2019.01.19 16:49:01 2: Watchdog Client: no systemd watchdog available
2019.01.19 16:49:33 0: Server shutdown
2019.01.19 16:49:33 1: Shutdown executed
2019.01.19 16:49:34 1: Including fhem.cfg

2019.01.19 16:49:37 3: Druck_Test: I/O device is deCONZ
2019.01.19 16:49:37 1: Watchdog Client: systemd watchdog is not available. Module inactiv.
2019.01.19 16:49:37 1: Including ./log/fhem.save
/var/run/fhem/fhem.pid: No such file or directory
2019.01.19 16:49:38 1: Including fhem.cfg



Das Verzeichnis /var/run/fhem wurde von mir auch schon mal von Hand angelegt. Nach einem Systemstart nicht mehr vorhanden.
Beim ersten Installationsversuch war FHEM 4Min. erreichbar anschliessend 4Min. weg usw.
Bei diesem Versuch wird FHEM ständig rebootet.

Gruß
Thomas
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 19 Januar 2019, 19:10:36
Verzeichnisse unter /var per Hand anzulegen ist idR sinnlois, da dies wird im RAM-Disk abgebildet. Dafür stehen entsprechende Befehle in dem service-Script.

Laut log läuft dein fhem nicht unter systemd, oder das Modul kann das nicht erkennen.

Interessant ist der Log von systemd. Was wird ausgebenen bei folgendem Befehl
sudo systemctl status fhem.service

Wurde service-script von meiner Webseite genommen? Ist nofork definiert?


Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 19 Januar 2019, 20:06:20
Hallo Alexander,
war ich mal wieder zu schnell (was bei mir selten vorkommt ;D) und habe das Backup-Image eingespielt.
Kein Problem machen wir es nochmals von Vorne.
Ohne Installation von watchdog.

sudo systemctl status fhem.service

● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: ena
   Active: active (running) since Sun 2019-01-06 14:04:47 CET; 1 weeks 6 days ag
  Process: 630 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/S
Main PID: 700 (perl)
   CGroup: /system.slice/fhem.service
           └─700 /usr/bin/perl fhem.pl fhem.cfg

Jan 06 14:04:45 Raspberry-Monitor systemd[1]: Starting FHEM Home Automation...
Jan 06 14:04:47 Raspberry-Monitor systemd[1]: Started FHEM Home Automation.


nun ersetzeich die vorhandene /etc/systemd/system/fhem.service

# $Id: fhem.service 16001 2018-01-26 11:54:41Z betateilchen $

[Unit]
Description=FHEM Home Automation
Wants=network.target
After=network.target

[Service]
Type=forking
User=fhem
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always

[Install]
WantedBy=multi-user.target

durch die im ersten Post.
Führe  "sudo systemctl daemon-reload".
Dieses mal kommt nach ausführen von "sudo systemctl start fhem.service" eine Fehlermeldung (beim letzten Versuch nicht aufgefallen).

Job for fhem.service failed because a timeout was exceeded.
See "systemctl status fhem.service" and "journalctl -xe" for details.


"status fhem.service"

sudo systemctl status fhem.service
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: activating (start) since Sat 2019-01-19 19:55:03 CET; 1min 42s ago
  Process: 31815 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)
  Process: 31812 ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem (code=exited, status=0/SUCCESS)
  Process: 31808 ExecStartPre=/bin/mkdir /var/run/fhem (code=exited, status=1/FAILURE)
Main PID: 700 (code=killed, signal=ABRT)
   CGroup: /system.slice/fhem.service
           └─31816 /usr/bin/perl fhem.pl fhem.cfg

Jan 19 19:55:03 Raspberry-Monitor systemd[1]: Stopped FHEM Home Automation.
Jan 19 19:55:03 Raspberry-Monitor systemd[1]: Starting FHEM Home Automation...
Jan 19 19:55:04 Raspberry-Monitor systemd[1]: fhem.service: PID file /var/run/fhem/fhem.pid not readable (yet?) after start: No such file or directory


und ein "sudo journalctl -xe" bringt mir diese Meldungen.


-- The result is failed.
Jan 19 19:55:00 Raspberry-Monitor systemd[1]: fhem.service: Unit entered failed state.
Jan 19 19:55:00 Raspberry-Monitor systemd[1]: fhem.service: Failed with result 'timeout'.
Jan 19 19:55:03 Raspberry-Monitor systemd[1]: fhem.service: Service hold-off time over, scheduling restart.
Jan 19 19:55:03 Raspberry-Monitor systemd[1]: Stopped FHEM Home Automation.
-- Subject: Unit fhem.service has finished shutting down
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit fhem.service has finished shutting down.
Jan 19 19:55:03 Raspberry-Monitor systemd[1]: Starting FHEM Home Automation...
-- Subject: Unit fhem.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit fhem.service has begun starting up.
Jan 19 19:55:03 Raspberry-Monitor mkdir[31808]: /bin/mkdir: das Verzeichnis ,,/var/run/fhem" kann nicht angelegt werden: Die Datei existiert bereits
Jan 19 19:55:04 Raspberry-Monitor systemd[1]: fhem.service: PID file /var/run/fhem/fhem.pid not readable (yet?) after start: No such file or directory
Jan 19 19:55:18 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:55:19 Raspberry-Monitor sudo[31793]: pam_unix(sudo:session): session closed for user root
Jan 19 19:55:49 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:56:19 Raspberry-Monitor sudo[32231]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/systemctl status fhem.service
Jan 19 19:56:19 Raspberry-Monitor sudo[32231]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
Jan 19 19:56:20 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:56:43 Raspberry-Monitor sudo[32231]: pam_unix(sudo:session): session closed for user root
Jan 19 19:56:46 Raspberry-Monitor sudo[32373]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/systemctl status fhem.service
Jan 19 19:56:46 Raspberry-Monitor sudo[32373]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
Jan 19 19:56:46 Raspberry-Monitor sudo[32373]: pam_unix(sudo:session): session closed for user root
Jan 19 19:56:51 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:57:21 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:57:52 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:57:57 Raspberry-Monitor sudo[335]:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/journalctl -xe
Jan 19 19:57:57 Raspberry-Monitor sudo[335]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
Jan 19 19:58:23 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:58:53 Raspberry-Monitor deCONZ-WIFI.sh[299]: Device "wlan0" does not exist.
Jan 19 19:59:03 Raspberry-Monitor systemd[1]: fhem.service: Start operation timed out. Terminating.
Jan 19 19:59:03 Raspberry-Monitor systemd[1]: Failed to start FHEM Home Automation.
-- Subject: Unit fhem.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit fhem.service has failed.


Gruß Thomas
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 19 Januar 2019, 21:28:35
FHEM startet nicht, weil sie angewiesen wurde, PID-File zu erstellen, geht aber nicht, da Verzeichnis angeblich nicht beschreibbar. Service-Script kann diese auch nicht erstellen. Warum? Angeblich schon vorhanden. Die Meldung ist unschön, sollte jedoch eigentlich nicht weiter stören. Ergänze Option -p bei mkdir (ich habe ersten Post entsprechend angepasst), dann ist die Meldung weg. Bitte schaue nach den Rechten für /var/run/fhem/
ls -l /var/run/fhem/

Ist genügend Platz vorhanden?
df /var/run

Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 19 Januar 2019, 22:12:16
Bei "sudo systemctl start fhem.service" bekomme ich nach wie vor eine Fehlermeldung.
Neu Meldung bei Abfrage des Status.

● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: activating (start) since Sat 2019-01-19 21:58:35 CET; 1min 19s ago
  Process: 6716 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)
  Process: 6712 ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem (code=exited, status=0/SUCCESS)
  Process: 6710 ExecStartPre=/bin/mkdir -p /var/run/fhem (code=exited, status=0/SUCCESS)
Main PID: 606 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/fhem.service
           └─6718 /usr/bin/perl fhem.pl fhem.cfg

Jan 19 21:58:35 Raspberry-Monitor systemd[1]: Starting FHEM Home Automation...
Jan 19 21:58:36 Raspberry-Monitor systemd[1]: fhem.service: PID file /var/run/fhem/fhem.pid not readable (yet?) after start: No such file or directory


" ls -l /var/run/fhem/" liefert den Wert "insgesamt 0",Verzeichnis ist leer und hat die Rechte "dailout" und "fhem"
" df /var/run" Listet dieses auf

Dateisystem    1K-Blöcke   Benutzt   Verfügbar   Verw%   Eingehängt auf
tmpfs               474724     12236      462488      3%         /run


Kann es damit zusammen hängen das es die
,,Raspbian Stretch with desktop and recommended software"
Version ist und nicht die lite?

Werde es noch mit der Lite versuchen.



Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 19 Januar 2019, 22:18:22
Mit den Verzeichnissen ist alles in Ordnung. Das Problem ist, dass fhem keine PID-Datei erstellt. Hast Du fhem entsprechend konfiguriert?

ZitatKann es damit zusammen hängen das es die
,,Raspbian Stretch with desktop and recommended software"
Version ist und nicht die lite?
Kann ich mir nicht vorstellen.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 20 Januar 2019, 00:08:49
Hallo Alexander,
herzlichen Dank für deine Hilfe. 

Habe auf den Raspi das Backup-File neu aufgespielt und die Konfigurationen aus dem 1.Poste neu durchgeführt.
Lief bis zum FHEM-Backup Einwandfrei (35 Minuten)
Führte zum Schluss vom Backup einen Reboot durch und kam anschließend wieder.

Log ist Reverse - Beachte die Zeitern (Zeitsprung)

2019.01.19 23:42:09 3: WEB: port 8083 opened
2019.01.19 23:42:08 3: telnetPort: port 7072 opened
2019.01.19 23:42:08 1: Including fhem.cfg
2019.01.19 23:43:18 2: Watchdog Client: deactivated
2019.01.19 23:43:18 2: Watchdog Client: Shutting down
2019.01.19 23:43:18 1: Shutdown executed
2019.01.19 23:43:18 0: Server shutdown
2019.01.19 23:41:31 1: Calling /usr/bin/perl ./contrib/commandref_join.pl -noWarnings, this may take a while
2019.01.19 23:41:31 1: ... rest of lines skipped.


Wäre es möglich den Watchdog inaktiv zu schalten um ungewollte Auslöser zu umgehen?
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 20 Januar 2019, 01:08:07
zu früh gefreut.
es wird ca. alle 8 Minuten ein Reboot durchgeführt.
werde es Morgen/Heute näher untersuchen.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 20 Januar 2019, 16:01:04
1.Test
- raspbian "2018-11-13-raspbian-stretch-full" auf SD-Karte
- Fhem nach https://debian.fhem.de/ (https://debian.fhem.de/) Manuell installiert
- bei beiden ein Update durchgeführt.
- Watchdog nach Anleitung 1.Poste installiert

Watchdog schlägt alle ca. 8Minuten zu.


2019.01.20 15:17:11 1: Including fhem.cfg
2019.01.20 15:17:11 3: WEB: port 8083 opened
2019.01.20 15:17:11 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:17:11 1: Including ./log/fhem.save
2019.01.20 15:17:12 1: usb create starting
2019.01.20 15:17:12 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:17:12 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:17:12 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:17:12 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:17:12 1: usb create end
2019.01.20 15:17:12 2: Watchdog Client: initialized
2019.01.20 15:17:12 3: NTFY return:  watchdog:active
2019.01.20 15:17:12 0: Featurelevel: 5.9
2019.01.20 15:17:12 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:677)
2019.01.20 15:21:10 0: Server shutdown
2019.01.20 15:21:10 2: Watchdog Client: Shutting down
2019.01.20 15:21:10 2: Watchdog Client: deactivated
2019.01.20 15:25:15 1: Including fhem.cfg
2019.01.20 15:25:15 3: WEB: port 8083 opened
2019.01.20 15:25:15 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:25:15 1: Including ./log/fhem.save
2019.01.20 15:25:16 1: usb create starting
2019.01.20 15:25:16 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:25:16 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:25:16 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:25:16 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:25:16 1: usb create end
2019.01.20 15:25:16 2: Watchdog Client: initialized
2019.01.20 15:25:16 3: NTFY return:  watchdog:active
2019.01.20 15:25:16 0: Featurelevel: 5.9
2019.01.20 15:25:16 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:762)
2019.01.20 15:29:14 0: Server shutdown
2019.01.20 15:29:14 2: Watchdog Client: Shutting down
2019.01.20 15:29:14 2: Watchdog Client: deactivated
2019.01.20 15:33:19 1: Including fhem.cfg
2019.01.20 15:33:19 3: WEB: port 8083 opened
2019.01.20 15:33:19 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:33:19 1: Including ./log/fhem.save
2019.01.20 15:33:19 1: usb create starting
2019.01.20 15:33:20 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:33:20 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:33:20 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:33:20 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:33:20 1: usb create end
2019.01.20 15:33:20 2: Watchdog Client: initialized
2019.01.20 15:33:20 3: NTFY return:  watchdog:active
2019.01.20 15:33:20 0: Featurelevel: 5.9
2019.01.20 15:33:20 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:813)
2019.01.20 15:37:18 0: Server shutdown
2019.01.20 15:37:18 2: Watchdog Client: Shutting down
2019.01.20 15:37:18 2: Watchdog Client: deactivated
2019.01.20 15:41:23 1: Including fhem.cfg
2019.01.20 15:41:23 3: WEB: port 8083 opened
2019.01.20 15:41:23 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:41:24 1: Including ./log/fhem.save
2019.01.20 15:41:24 1: usb create starting
2019.01.20 15:41:24 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:41:24 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:41:24 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:41:24 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:41:24 1: usb create end
2019.01.20 15:41:24 2: Watchdog Client: initialized
2019.01.20 15:41:24 3: NTFY return:  watchdog:active
2019.01.20 15:41:24 0: Featurelevel: 5.9
2019.01.20 15:41:24 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:860)


Braucht Fhem wirklich 2-3 Minuten zum Starten?? Es ist lange Zeit nicht erreichbar.

pi@raspberrypi:~ $ sudo systemctl status fhem.service
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: ena
   Active: deactivating (final-sigkill) (Result: timeout)
  Process: 906 ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem (code=exite
  Process: 903 ExecStartPre=/bin/mkdir -p /var/run/fhem (code=exited, status=0/S
Main PID: 908 (code=exited, status=0/SUCCESS); Control PID: 908
   Status: "stopping"
   CGroup: /system.slice/fhem.service

Jan 20 15:49:26 raspberrypi systemd[1]: Starting FHEM Home Automation...
Jan 20 15:53:26 raspberrypi systemd[1]: fhem.service: Start operation timed out.
Jan 20 15:55:26 raspberrypi systemd[1]: fhem.service: State 'stop-final-sigterm'
Jan 20 15:55:26 raspberrypi systemd[1]: fhem.service: Killing process 908 (n/a)


2019.01.20 15:45:22 0: Server shutdown
2019.01.20 15:45:22 2: Watchdog Client: Shutting down
2019.01.20 15:45:22 2: Watchdog Client: deactivated
2019.01.20 15:49:27 1: Including fhem.cfg
2019.01.20 15:49:27 3: WEB: port 8083 opened
2019.01.20 15:49:27 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:49:28 1: Including ./log/fhem.save
2019.01.20 15:49:28 1: usb create starting
2019.01.20 15:49:28 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:49:28 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:49:28 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:49:28 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:49:28 1: usb create end
2019.01.20 15:49:28 2: Watchdog Client: initialized
2019.01.20 15:49:28 3: NTFY return:  watchdog:active
2019.01.20 15:49:28 0: Featurelevel: 5.9
2019.01.20 15:49:28 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:908)
2019.01.20 15:53:26 0: Server shutdown
2019.01.20 15:53:26 2: Watchdog Client: Shutting down
2019.01.20 15:53:26 2: Watchdog Client: deactivated
2019.01.20 15:57:31 1: Including fhem.cfg
2019.01.20 15:57:31 3: WEB: port 8083 opened
2019.01.20 15:57:31 2: eventTypes: loaded 2 events from ./log/eventTypes.txt
2019.01.20 15:57:31 1: Including ./log/fhem.save
2019.01.20 15:57:32 1: usb create starting
2019.01.20 15:57:32 3: Probing ZWDongle device /dev/serial0
2019.01.20 15:57:32 1: ZWDongle: Can't open /dev/serial0: Permission denied
2019.01.20 15:57:32 3: Probing CUL device /dev/ttyAMA0
2019.01.20 15:57:32 1: CUL: Can't open /dev/ttyAMA0: Permission denied
2019.01.20 15:57:32 1: usb create end
2019.01.20 15:57:32 2: Watchdog Client: initialized
2019.01.20 15:57:32 3: NTFY return:  watchdog:active
2019.01.20 15:57:32 0: Featurelevel: 5.9
2019.01.20 15:57:32 0: Server started with 7 defined entities (fhem.pl:18343/2019-01-20 perl:5.024001 os:linux user:fhem pid:1051)
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 20 Januar 2019, 18:23:17
2. Test
mit "2018-11-13-raspbian-stretch-lite", Verfahren wie ein Poste höher.
Auch hier schlägt der Watchdog zu.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 29 Januar 2019, 09:45:55
War eine Woche unterwegs, kam nicht dazu, Forum zu lesen.
Besteht das Problem weiterhin? Ich sehe leider nicht mehr, was falsch sein könnte :/
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Solala0815 am 03 Februar 2019, 09:59:05
Hallo Alexander,

herzlichen Dank für deine Hilfe.
Leider lese ich hier nur sporadisch mit.

ZitatBesteht das Problem weiterhin?
Zu deiner Frage: Nein. Habe den Watchdog nicht mehr installiert.
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: Gisbert am 08 August 2019, 18:54:05
Hallo hexenmeister,

ZitatWenn in dem Script "Type=notify" verwendet wird, muss global Attribute "nofork=1" gesetzt sein.
Code: [Auswählen]

attr global nofork 1

Bei "Type=forking" muss in Script der korrekte Pfad zu dem PID-Datei angegeben werden, diese Datei muss auch in FHEM mit dem global Attribute "pidfilename" aktiviert sein.
Code: [Auswählen]

attr global pidfilename /var/run/fhem/fhem.pid

Kannst Du mir erklären, was es mit den Optionen "Type=notify bzw. forking" auf sich hat?
Sowohl der Ordner als die Datei fehlen bei mir: /var/run/fhem/fhem.pid
Welche Rechte muss der Ordner fhem und die Datei fhem.pid haben, und welchen Inhalt hat diese Datei?

Viele Grüße Gisbert
Titel: Antw:Modul zum senden von keep-alive Meldungen an systemd (watchdog)
Beitrag von: hexenmeister am 10 August 2019, 17:25:10
Das hat was mit der Konfiguration von systemd zu tun.
ZitatIf set to forking, it is expected that the process configured with ExecStart= will call fork() as part of its start-up. The parent process is expected to exit when start-up is complete and all communication channels are set up. The child continues to run as the main daemon process. This is the behavior of traditional UNIX daemons. If this setting is used, it is recommended to also use the PIDFile= option, so that systemd can identify the main process of the daemon. systemd will proceed with starting follow-up units as soon as the parent process exits.
https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=

Der Ordner /var/run/fhem wird im dem systemd-Script erstellt und mit Rechten versehen (Soll zu dem Uder / der Gruppe des FHEMs passen):
...
ExecStartPre=-/bin/mkdir -p /var/run/fhem
ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem
...

fhem.pid wird dann dort von dem FHEM erstellt. Dafür muss Attribut pidfilename gesetzt werden.
attr global pidfilename /var/run/fhem/fhem.pid