FHEM-Plugin für checkMK

Begonnen von erdo_king, 30 Dezember 2016, 17:35:26

Vorheriges Thema - Nächstes Thema

erdo_king

Hallo Community,

ich bin begeisterter Fan von FHEM und von checkMK.
Da lag es nur nahe beide System zu verbinden ...

Ich habe mein Plugin nach etlichen Monaten Entwicklung soeben im GitHub veröffentlicht.
https://github.com/erdoking/mk_fhem

Somit wandern nun die Daten meiner Haussteuerung auch in mein Monitoring und werden dort grafisch aufgearbeitet im Jahresverlauf präsentiert ...
Ich hoffe auf (rege) Begeisterung und diversen Hinweise von andern Technik-begeisterten Personen!



History:
12.09.2021 | v0.9.5: Kompatibilität mit CheckMK 2.0 / Anpassung an FHEM-Update / neuer Switch für "Control Mode"
21.10.2019 | v0.9.4: Kompatibilität mit CheckMK 1.6
15.10.2018 | v0.9.3: Unterstützung für MAX! / Unterstützung für XiaomiFlowerSens
03.07.2018 | v0.9.2: weitere Readings für Luxtronik / min. Version auf 1.2.8 geändert
25.06.2018 | v0.9.1: Unterstützung für Luxtronik / HomeMatic reading 'activity' konfigurierbar
20.06.2018 | v0.9.0: Kompletter Rewrite der WATO Konfiguration, nun mit Kategorien



Die aktuellste MKP immer im Github

gerhardg

Damit der Thread nicht gänzlich untergeht ;)

Ich bastle seit einiger Zeit ebenfalls an einem Plugin, jedoch für Icinga/Naemon/Nagios. Hintergrund ist bei mir eher stetig steigende Zahl von Sensoren/Komponenten mit Lan/Wlan.

oliverr

Hallo erdo_king,

danke für das Plugin. Habe es mal eingebunden und werde es die Tage mal testen.

Es wäre schön, wenn Du eine Kontakt Emailadresse in die Dateien einfügen würdest, damit man Kontakt aufnehmen kann.
Evtl. noch eine Versions Angabe mit einbauen.

Es wäre super wenn Du daraus ein mkp erstellen könntest https://mathias-kettner.de/cms_mkps.html

Auf den ersten Blick:
Ich habe Fenstergriff Sensoren wo der Check einen Graph anlegen will aber nörgelt das er das nicht kann...

Freue mich auf Neuigkeiten.

Danke & Grüße,
Oliver

DeeSPe

Ich bin sowohl begeisterter Check_MK User (beruflich) als auch FHEM User (privat).

Irgendwie erschliesst sich mir nun aber nicht so richtig der Sinn darin die Daten von FHEM auch in Check_MK (und damit doppelt) zu haben. Was bringt es denn evtl. für Vorteile?
Die Daten loggen, grafisch aufbereiten und auch Benachrichtigen bei Grenzwerten funktioniert doch mit FHEM bestens!?

Vielen Dank im Voraus für die Erleuchtung.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

gwegl

#4
Hallo erdo_king!
Vielen Dank für das Plugin! Die Anleitung auf git ist doch etwas spartanisch. Die files kopieren schaffte ich gerade noch. Doch wo ich die ip des fhem und ggf die Zugangsdaten eintragen darf hab ich nicht gefunden. Daher sicherlich auch die Fehlermeldung, die ich ernte, wenn ich einen Host ergänzen möchte.

Error in plugin file /omd/sites/gnant/local/share/check_mk/checks/fhem: invalid syntax (fhem, line 7)
["Cannot lookup IP address of 'fhem' (Failed to lookup IPv4 address of fhem via DNS: [Errno -3] Temporary failure in name resolution\n). The host will not be monitored correctly."]

...in line 7 beginnt der code in "fhem" script...
Vielen Dank!
Auf einer Oberfläche zusammengefasst wäre wirklich nett ;-)
LG
Gerhard
PS: check_mk Version 1.4.0 p9 tauglich?

erdo_king

Hallo Gerhard,

Zuerst einmal freut es mich das noch andere mein Plugin benutzen! Die Kombination Fhem+CheckMK dürfte recht selten auftreten ;)

Die Fehlermeldung von dir besagt, das dein CheckMK-Server den Hostnamen "fhem" nicht auflösen kann.
Das hat nichts mit meinem Plugin zu tun! Mein Plugin werkelt als CheckMK-Agent Plugin, welches auf dem entsprechendem Client (hier fhem) hinterlegt werden muss.

Der Output wird dann zusammen mit dem normalem Agent-Output übertragen ...
Wenn du (wie ich) dein FHEM nicht im selben Netz stehen hast wie den CheckMK-Server dann wird hier mal einen Blick drauf, so habe ich das umgesetzt:
https://blog.ichalsroot.de/entfernte-checkmk-agents-ueberwachen-sshtls/

Grüße
erdo

P.s.: Ich werde die Tage mal im Github aufräumen und die Doku verbessern!

gwegl

Hallo erdo!
Erstmal danke für deine rasche Antwort!!

Habe "fhem" in die hosts eingetragen. Auflösung geht jetzt... aber .... ich hab da völlig falsch gedacht... scheinbar. Die plugins müssen ja auf den fhem "host".
Daher muss ich nochmal an den Start.

Weiters stellt sich für mich die Frage... wenn "fhem" fix verdrahtet ist, dann kann ich "nur" einen fhem einbinden?! richtig?
Bei mir geht es primär um Temperatur- Sensoren... die ich in einer Oberfläche (check_mk) zusammenfassen will. Das geht ja laut deinen screenshots wunderbar  :)
Vielen Dank!
Gruss
Gerhard

erdo_king

Ich versuche dir noch zu folgen ...

Ein paar (Netzwerk-/Fhem) Grundlagen:

  • "fhem" ist ein beliebiger Host-Name, der offenbar in deinem Netzwerk nicht richtig per DNS aufgelöst werden kann (weswegen du ihn in der /etc/hosts deklariert hast)
  • nennst du einen weiteren fhem-Server "fhem1 kannst du beliebig viele Server im CheckMK monitoren"
  • Fhem kann eine große Anzahl von Sensoren parallel verwalten (hat an dieser Stelle nichts mit CheckMK zu tun!
  • Ich habe eine Fhem Instanz, 
  • hier sind alle Sensoren die ich besitze konfiguriert, siehe Screenshot
  • DAS Plugin muss auf den Fhem-Server (singular)


Tipp:
Du musst die Server für CheckMK nicht in der /etc/hosts angeben, die IP-Adressen können direkt am Server deklariert werden!
Server auswählen -> WATO -> IPv4 Address (Abschnitt Basic settings)

f-zappa

Moin,

erst mal muss ich sagen: sehr cool! Die Einrichtung ging fix und viele meiner FHEM-Devices tauchten sofort in check_mk auf.
Allerdings meckert check_mk  den Check trotzdem mit "UNKNOWN - check failed - please submit a crash report!" an. Wenn man auf das "Bömbchen" drückt, findet sich dann der Hinweis  "NameError (global name 'dewpoint' is not defined)". Python spreche ich leider nicht, darum bin ich mir nicht sicher: fehlt ihm irgendwo eine Variablendeklaration? Dann dürfte ich doch aber nicht der einzige mit diesem Fehler sein?

Gruß, Uli

erdo_king

Mhmm ich habe den dewpoint in fhem aktiviert.

define dewpointToAllDeviceReadings dewpoint dewpoint .* temperature humidity dewpoint
define dewpointToAllDeviceStates dewpoint dewpoint .* T H D

ich schätze mal das du da einen Bug entdeckt hast. Ich schau mir das mal in Ruhe an und melde mich dann wieder.

erdo_king

Hallo Uli,

ich habe versucht dein Problem nachzustellen, und habe in meinem Agent-Output den Dewpoint rausgenommen und ein wenig mit den Variablen rumgespielt ...
(Leider!?) tritt der Fehler bei mir nicht auf.

Ich benötige mehr Informationen, nach Möglichkeit einen (anonymisierten) Auszug des CheckMK-Agents ...

gewünschte Informationen:
check_mk
- Version
- Service Parameter (von einer "Bombe")
- Auszug check_mk_agent (mind. Abschnitt <<<fhem>>>)
- Betriebssystem (Debian Jessie ...)
- python version

fhem
- Version (Updatestatus)
- dewpoint aktiviert?
- Betriebssystem (Debian Jessie auf Raspi...)
- perl-Version
- welches Device wird ausgelesen? (falls nicht im Agent-Output ersichtlich)


Ich habe bislang nur meinem eigenen Devices und die einiger Kollegen (die ebenfalls fhem einsetzen) eingebunden. Bei Geräten anderer Hersteller kann es durchaus zu Problemen kommen.
Beispiel gemessene Temperatur:
- Homematic: measured-temp
- LaCrosse: temperature



f-zappa

Hi erdo_king,

den eigentlichen Fehler habe ich gerade selbst gefunden: ich hatte Unsinn konfiguriert. Ich wollte die Schwellwerte für das Batterie-Monitoring anpassen, habe dabei aber stattdessen einen "manual check" angelegt und die Angabe für "device" leer gelassen.

Ein bisschen zu debuggen bleibt aber für dich: Da das Modul keinen Wert ermitteln konnte (wie auch, für einen leeren String als item), griff deine Fehlerbehandlung, und in der scheint mir etwas nicht zu stimmen:
        if ourstatus == 0:
                return (3, "UNKNOWN - %s - %s " % (device, dewpoint))

"dewpoint" gibt es tatsächlich nicht als Variable und bei "device" habe ich nur eine Zeile gefunden, wo es als leerer String definiert wird. Muss da vielleicht irgendwo "item" stehen?

Gruß, Uli

erdo_king

Ich muss echt aufhören Alkohol beim programmieren zu trinken  :-X *prost*
Ich stimme dir zu, die Zeile macht einfach mal überhaupt keinen Sinn ... Der Fall sollte faktisch nie eintreten, daher ist mir das bislang wohl nicht aufgefallen ...

Ist *gefixt*. Immerhin eine sprechendere Ausgabe, ich wüsste kaum einen Fall wo das auftreten sollte ...
Verbesserungsvorschläge für die Fehlermeldung gerne willkommen.

https://github.com/erdoking/mk_fhem/commit/6b5ad12abbfc48b5e4817e77d83ba5e3e4814362

Ich bastel wohl mal wieder was weiter, gibt wieder neue Dinge die ich einprogrammieren möchte:
- espEasy
- WifiLight

Aber vorher räume ich mal den Code auf !
Und als Zielgebung setze ich mir mal anständige mpk für CheckMK zu bauen  ::)

f-zappa

Ich schon wieder  8)

Mein Monitoring mit check_mk läuft inzwischen seit ein paar Monaten prima. Übrigens bin ich auf das Tool erst durch diesen Thread aufmerksam geworden. Ich habe früher mal ein bisschen mit Nagios gearbeitet - das ist so lange her, dass das Ding damals noch "NetSaint" hieß und noch ziemlichen Aufwand bei der Einrichtung machte. Da ist check_mk viel hübscher, da bekommt man mit minimalem Aufwand schon eine brauchbare Monitoring-Baseline, die man dann halt noch ein bisschen customizen kann.

Ach ja, ich wollte ja was .. könntest Du, erdo_king, das Reading "battery" nutzbar machen? Das Reading selbst liest du zwar schon aus, aber es wird nicht ausgewertet, parametrisierbar ist nur "batteryLevel". Manche Geräte haben aber nur das normale "battery" Reading, z.B. die HomeMatic-Fensterkontakte. Und für die will ich ja auch Tickets bekommen :)

Gruß, Uli

erdo_king

Hey Uli,

ich hatte das Reading nicht auf dem Schirm, da 99% davon auf "ok" stehen ...
Hab's jetzt eingebaut - und als default wird der Wert "ok" verlangt (natürlich anpassbar ;) )

Promt einen Alarm erhalten:
Zitatbattery: low (expected: ok)

Code wie gehabt im GitHub (und immernoch kein mpk, ich gelobe Besserung)
Übrigens habe ich mein CheckMK mal auf den aktuellsten Stand gebracht: 1.4.0p33 (raw), funktioniert damit immer noch....

Gruß
erdo