Autor Thema: Neues Modul: 98_FREEZEMON Freezes monitoren und Verursacher identifizieren  (Gelesen 24697 mal)

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2649
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>

Attribute
fm_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

Get
freeze: 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.



« Letzte Änderung: 06 Februar 2018, 08:32:48 von KernSani »
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...
Gefällt mir Gefällt mir x 7 Liste anzeigen

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3133
Prima Oli.

Mir fehlte noch der Link zu Ursprungspost, damit neue Nutzer des Moduls vorab ein Gefühl für das Modul bekommen(und gleiche Fragen nicht noch einmal stellen ::))

Grüße Markus
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Offline Icinger

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1163
Hat er doch eh oben gepostet:
Zitat
(zur Entstehungsgeschichte und letzte Version siehe hier https://forum.fhem.de/index.php/topic,83748.msg760053.html#msg760053)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Offline binford6000

  • Tester
  • Sr. Member
  • ****
  • Beiträge: 756
  • 🏠⚙️🛠📱
Moin KernSani,
hab heute morgen ein Update gemacht. Version 0.0.07 ist im svn. Im Changelog steht aber bereits die 0.0.0.8 drin...
Aus der Modulhilfe:
Zitat
fm_freezeTime: Wert in Sekunden (Default: 1) - Nur Freezes länger als fmFreezeTime werden als Freeze betrachtet
fmFreezeTime hast Du ja umbenannt in fm_freezeThreshold. Mit fm_freezeThreshold=5 werden troztdem Freezes <=5s als solche gewertet:
freezeTime 2.627 2018-02-06 09:39:02Ist das so gewollt?
VG Sebastian


FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3133
Hi Stefan, ich Blinder.  :-[
RPi3/2 Stretch-STV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-CUL868-FS20A4-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty-Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)

Offline mahowi

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 989
Ich kann das Ergebnis von Sebastian nur bestätigen:

freezeTime         1.905
fm_freezeThreshold 4
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2649
Aus der Modulhilfe:fmFreezeTime hast Du ja umbenannt in fm_freezeThreshold. Mit fm_freezeThreshold=5 werden troztdem Freezes <=5s als solche gewertet:
Vielen Dank für den Hinweis, das ist wohl seit Version 0.0.2 so  ???
Fix für das nur teilweise umbenannte Attribut fm_freezeThreshold ist eingecheckt und kommt mit dem morgigen update.
Und die Versionsnummer habe ich diesmal auch aktualisiert ;-)


RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline binford6000

  • Tester
  • Sr. Member
  • ****
  • Beiträge: 756
  • 🏠⚙️🛠📱
Hi Oli,
ich habe heute morgen ein Update ausgeführt und nun greift "fm_freezeThreshold" und alles läuft wie erwartet!
Und die Versionsnummer passt auch  :D
Was ich noch schick finden würde wären set-Befehle wie:
set SystemFreeze active/inactiveset SystemFreeze reset"active/inactive" um attr disable 0/1 <save> zu vermeiden und "reset" um alle Readings zurückzusetzen.
Was hältst Du davon? Vielleicht steht das ja sogar schon auf deiner ToDo-List  ;)
VG Sebastian

FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline DarkT

  • Full Member
  • ***
  • Beiträge: 143
Hallo KernSani,

ist es möglich noch ein Beispiel für die LogFile Konfiguration und eine SVG-Grafik beizufügen, das wäre perfekt.

Vielen Dank für das Module.

lg darkT

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2649
Hi Oli,
Was ich noch schick finden würde wären set-Befehle wie:
set SystemFreeze active/inactiveset SystemFreeze reset"active/inactive" um attr disable 0/1 <save> zu vermeiden und "reset" um alle Readings zurückzusetzen.
Was hältst Du davon? Vielleicht steht das ja sogar schon auf deiner ToDo-List  ;)
Hi Sebastian,
explizit auf der todo-Liste hatte ich es noch nicht, aber im Hinterkopf war der Gedanke schon. Magst du mal kurz angehängte Version testen? (Neue Set Befehle active, inactive und clear)
Todo: Doku aktualisieren

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline binford6000

  • Tester
  • Sr. Member
  • ****
  • Beiträge: 756
  • 🏠⚙️🛠📱
Hi Oli,
Zitat
Magst du mal kurz angehängte Version testen? (Neue Set Befehle active, inactive und clear)
Klaro: Schon gemacht und keine Fehler festgestellt.
set, get und clear
funktionieren wie gewünscht!  :D

Um die Anfrage von DarkT aufzugreifen:
Zitat
ist es möglich noch ein Beispiel für die LogFile Konfiguration und eine SVG-Grafik beizufügen, das wäre perfekt.
Man könnte das Modul ja auch nach der Definition in einen Standard-Raum "Freeze" packen und dort per autocreate
durch dein Modul ein Log- und einen Plot-Device erstellen lassen. Wer es nicht braucht, löscht die devices halt wieder raus. Ist nur so eine Idee...

Ein puristischer (Linux)-Ansatz: Die DEFs der Log- und SVG-Devices in die Modulhilfe oder in einen WIKI-Artikel gepackt.
VG Sebastian
FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3549
Hallo Oli,

ein kleiner Hinweis meinerseits:

        #map new Attribute names
        $hash->{AttrRenameMap} = { "fmForceApptime:0,1" => "fm_forceApptime:0,1",
                           "fmFreezeTime" => "fm_freezeThreshold"
                                                        };

Die AttrRenameMap darf nur reine Attributnamen enthalten (ohne Widgets/Wertelisten), da hier nur Attributname alt zu Attributname neu zugeordnet wird. Also bspw. so:

        #map new Attribute names
        $hash->{AttrRenameMap} = { "fmForceApptime" => "fm_forceApptime",
                           "fmFreezeTime" => "fm_freezeThreshold"
                                                        };

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline Rudy

  • New Member
  • *
  • Beiträge: 46
Todo: Doku aktualisieren
Dort heißt das Attribut "fm_freezeThreshold" auch noch "fm_freezeTime"  ;)

Offline Rudy

  • New Member
  • *
  • Beiträge: 46
Dort heißt das Attribut "fm_freezeThreshold" auch noch "fm_freezeTime"  ;)
Sorry. Tut es doch nicht.  :-[ Habe wohl trotz update noch eine alte Version davon laufen. Morgen düfte es dann auch bei mir passen.

Offline Fixel2012

  • Hero Member
  • *****
  • Beiträge: 1218
Sehr Interessant!

/Mit lese Marker gesetzt/
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

 

decade-submarginal