FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cs-online am 11 April 2020, 17:43:13

Titel: Watchdog mit Wertevergleich ?
Beitrag von: cs-online am 11 April 2020, 17:43:13
Hallo zusammen,

ich würde gerne einen Watchdog anlegen, der auf Sysmon:CPU bei 100 reagieren soll, so dass, wenn nach 3 Minuten noch immer Sysmon:CPU bei 100 ist, neu gebootet wird.

Ich habe das so definiert,

defmod Watchdog_CPU watchdog Sysmon:CPU>99 00:03:00 Sysmon:CPU<100 {system("sudo reboot")}

aber wenn ich das mit Schwellwert 5 teste, passiert rein gar nichts. Gibt es eine Möglichkeit,das so zu ändern, dass es für meinen Fall passen würde ? Hintergrund ist, dass sich aus noch unklarer Ursache manchmal nachts die CPU bis auf 100% hochschaukelt und dann reagiert FHEM irgendwann nicht mehr und dann hilft nur neu booten, dann ist wieder für Tage Ruhe...

Grüße

Christian
Titel: Antw:Watchdog mit Wertevergleich ?
Beitrag von: CoolTux am 11 April 2020, 18:17:17
Zitat von: cs-online am 11 April 2020, 17:43:13
Hallo zusammen,

ich würde gerne einen Watchdog anlegen, der auf Sysmon:CPU bei 100 reagieren soll, so dass, wenn nach 3 Minuten noch immer Sysmon:CPU bei 100 ist, neu gebootet wird.

Ich habe das so definiert,

defmod Watchdog_CPU watchdog Sysmon:CPU>99 00:03:00 Sysmon:CPU<100 {system("sudo reboot")}

aber wenn ich das mit Schwellwert 5 teste, passiert rein gar nichts. Gibt es eine Möglichkeit,das so zu ändern, dass es für meinen Fall passen würde ? Hintergrund ist, dass sich aus noch unklarer Ursache manchmal nachts die CPU bis auf 100% hochschaukelt und dann reagiert FHEM irgendwann nicht mehr und dann hilft nur neu booten, dann ist wieder für Tage Ruhe...

Grüße

Christian

So funktioniert watchdog nicht. Du musst RegEx verwenden

defmod Watchdog_CPU watchdog Sysmon:CPU:.[8-9][0-9] 00:03:00 Sysmon:CPU:.[0-4][0-9] {system("sudo reboot")}

Das Problem ist daß er so immer auslöst wenn er über 80 ist.
Ich würde im sysmon Device ein Userreading anlegen mit den Werten high und low und wurde darauf den watchdog triggern lassen.
Titel: Antw:Watchdog mit Wertevergleich ?
Beitrag von: cs-online am 11 April 2020, 18:45:34
Hallo CoolTux,

danke für die Erläuterungen ! Mit RegEx steh ich offen gestanden auf Kriegsfuss... gäbe es nicht auch ein RegEx für 100 und 90 ? Weil der geht dann immer auf volle 100%... Dann würde der bei 100 auslösen und falls der nach 3 Minuten nicht wieder unter 90 fällt, sollte der rebooten...
Titel: Antw:Watchdog mit Wertevergleich ?
Beitrag von: CoolTux am 11 April 2020, 19:43:59
Wie gesagt. Die sauberste Lösung meiner Meinung nach wäre ein userreading.


attr Sysmon userreadings CPU_Warn:CPU:.* { (ReadingsVal($name,'CPU',100) > 99 ? 'high' : 'low') }


Und dann Dein watchdog


defmod Watchdog_CPU watchdog Sysmon:CPU_Warn:.high 00:03:00 Sysmon:CPU_Warn:.low {system("sudo reboot")}
Titel: Antw:Watchdog mit Wertevergleich ?
Beitrag von: cs-online am 11 April 2020, 20:24:30
Super vielen Dank, hab das genau so eingebracht :-)

Wünsche fröhliche Ostern :-)