Hallo zusammen,
ich empfinde das aufspüren von "possible freezes" mit Hilfe von PERFMON, ggf. verbose 5 und apptime als extrem umständlich. Daher habe ich auf Basis von PERFMON ein Modul geschnitzt.
(zur Entstehungsgeschichte siehe hier
https://forum.fhem.de/index.php/topic,83748.msg760053.html#msg760053)
Bitte beachten! FREEZEMON versucht nur intelligent zu erraten, welches Device einen freeze verursacht haben könnte (basierend auf den Timern die laufen sollten). Es gibt eine Menge anderer Faktoren (intern oder extern) die einen Freeze verursachen können. FREEZEMON ersetzt keine detaillierte Analyse. Das Modul versucht nur Hinweise zu geben, was optimiert werden könnte.
FREEZEMON überwacht - ähnlich wie PERFMON mögliche Freezes, allerdings ist FREEZEMON ein echtes Modul und hat daher:
- Readings - die geloggt werden können und damit viel einfacher ausgewertet werden können
- Attribute - mit denen das Verhalten von freezemon beeinflusst werden kann
- zusätzliche Funktionalität - die versucht das den Freeze verursachende Device zu identifizieren
FREEZEMON ist noch in einem sehr frühen Stadium, läuft bei mir aber seit ein paar Tagen stabil, Daher würde ich mich freuen wenn der ein oder andere sich traut zu testen und Feedback gibt.
Ich würde empfehlen, PERFMON zu deaktivieren, wenn FREEZEMON aktiv ist, da beide auf die selbe Art Freezes erkennen und dann nur alles doppelt kommt.
FREEZEMON wird ohne Parameter definiert.
define myFreezemon freezemon
damit ist der Freezemon aktiv (im Log sollte eine entsprechende Meldung geschrieben werden)
Readings (nach dem ersten erkannten Freeze):freezeTime: Dauer des Freezes
freezeDevice: Liste von möglicherweise den Freeze auslösenden Funktionen(Devices)
fcDay: kumulierte Anzahl der Freezes pro Tag
ftDay: kumulierte Dauer der Freezes pro Tag
fcDayLast: speichert die kumulierte Anzahl der Freezes des vergangenen Tages (um tageweise plots zu erstellen)
fcDayLast: speichert die kumulierte Dauer der Freezes des vergangenen Tages (um tageweise plots zu erstellen)
state: s:<StartZeit> e:<EndeZeit>f:<Dauer> d:<Devices>
Attributefm_freezeTime: Wert in Sekunden (Default: 1) - Nur Freezes länger als fmFreezeTime werden als Freeze betrachtet
fm_forceApptime: Wenn FREEZEMON aktiv ist wird automatisch apptime gestartet (falls nicht aktiv)
fm_log: dynamischer Loglevel, nimmt einen String der Form 10:1 5:2 1:3 entgegen, was bedeutet: Freezes > 10 Sekunden werden mit Loglevel 1 geloggt, >5 Sekunden mit Loglevel 2 usw...
disable: aktivieren/deaktivieren der Freeze-Erkennung
Getfreeze: gibt die letzten 20 freezes zurück (in Kompakter Darstellung, wie im state) - Dies dient einem schnellen Überblick, für detailliertere Auswertungen empfehle ich die Daten zu loggen.