Check MK für die CCU

diverse Zusatzsoftware

Moderator: Co-Administratoren

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: Check MK für die CCU

Beitrag von deimos » 07.01.2018, 14:32

Hi,

wie auch auf GitHub geschrieben: Bitte mehr Infos über deine Umgebung: Ich konnte es problemlos installieren, auch auf 2.29.23

Viele Grüße
Alex

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: Check MK für die CCU

Beitrag von deimos » 08.01.2018, 09:32

Hi,

ich konnte das Problem eingrenzen und habe grade Version 1.3 auf GitHub hochgeladen. Da das Problem rein die Installation betrifft, ist ein Update bei bestehenden Installationen nicht notwendig.

Viele Grüße
Alex

robbyb
Beiträge: 2
Registriert: 15.03.2016, 21:09

Re: Check MK für die CCU

Beitrag von robbyb » 08.01.2018, 11:40

Hab's gesehen - vielen Dank.

Der check ist echt klasse und performance-technisch unproblematisch, soweit ich das nach 24 h sagen kann.

-=FuF=-
Beiträge: 97
Registriert: 30.12.2013, 21:08
Hat sich bedankt: 2 Mal

Re: Check MK für die CCU

Beitrag von -=FuF=- » 08.01.2018, 21:30

robbyb hat geschrieben:Der check ist echt klasse und performance-technisch unproblematisch, soweit ich das nach 24 h sagen kann.
Ist hier auf original CCU2 seit Sommer in Betrieb und definitiv kein Problem, außer als Antreiber was gegen die Servicemeldungen zu machen ;)

tbshmpl
Beiträge: 2
Registriert: 19.09.2018, 15:51

Re: Check MK für die CCU

Beitrag von tbshmpl » 19.09.2018, 15:56

Ich habe eine Frage zur Installation. In der Beschreibung steht, dass gepackte Installationpakete dabei sind. Ich kann die in Git aber nicht finden. Auch eine MKP Datei kann ich nicht finden.

Kann mir da jemand weiterhelfen?


tbshmpl
Beiträge: 2
Registriert: 19.09.2018, 15:51

Re: Check MK für die CCU

Beitrag von tbshmpl » 19.09.2018, 16:12

Ahh ok sorry. Ich kenne mich zu schlecht mit Git aus. Ich habe das nicht gefunden.

Vielen Dank!

-=FuF=-
Beiträge: 97
Registriert: 30.12.2013, 21:08
Hat sich bedankt: 2 Mal

Re: Check MK für die CCU

Beitrag von -=FuF=- » 29.01.2019, 23:05

Mit Raspberrymatic 3.41.11.20190126 ersetzt chrony ntp, folgende triviale Änderung dafür in der server.tcl des check_mk_agents repariert dies:

Code: Alles auswählen

# diff server.tcl.1.3.orig  server.tcl
--- server.tcl.orig
+++ server.tcl
@@ -70,6 +70,11 @@
         puts $channelId "<<<ntp>>>"
         puts $channelId "[exec ntpq -np | sed -e 1,2d -e {s/^\(.\)/\1 /} -e {s/^ /%/}]"
     }
+
+    if { [file exists /usr/bin/chronyc] == 1 } {
+        puts $channelId "<<<chrony>>>"
+        puts $channelId "[exec chronyc -n tracking | cat]"
+    }

     puts $channelId "<<<homematic:sep(59)>>>"
     puts $channelId [string trim [get_homematic_check_result]]
Im Original-Agent wird noch ein Fehler unterdrückt, sollte chrony nicht laufen, das habe ich mit meinen miesen tclsh-Kenntnissen nicht nachbauen können, der ||-Operator funktioniert nicht im exec. Das cat im obigen patch ist daher wahrscheinlich auch überflüssig.

Christian

-=FuF=-
Beiträge: 97
Registriert: 30.12.2013, 21:08
Hat sich bedankt: 2 Mal

Re: Check MK für die CCU

Beitrag von -=FuF=- » 08.04.2019, 00:30

Hi Alex,

ich habe noch ein bisschen am check und am agent gebastelt.

Ich habe einen bug report bezüglich Gewerk "Monitored": Meine HM-TC-IT-WM-W-EU im Gewerk "Monitored" werden zwar vom Check übertragen, aber es passiert einfach nichts. Das liegt daran, dass sie nicht den DP HUMIDITY vewenden, sondern ACTUAL_HUMIDITY

Code: Alles auswählen

OMD[fufnet]:/tmp$ diff homematic.orig /opt/omd/sites/fufnet/local/share/check_mk/checks/homematic
69c69,70
<       humidity = data.get('HUMIDITY', None)
---
>       # humidity = data.get('HUMIDITY', None)
>       humidity = data.get('HUMIDITY', data.get('ACTUAL_HUMIDITY', None))
79c80,81
<       humidity = data.get('HUMIDITY', None)
---
>       # humidity = data.get('HUMIDITY', None)
>       humidity = data.get('HUMIDITY', data.get('ACTUAL_HUMIDITY', None))
Ich habe weiterhin ein tclsh-Addon für Nicht-Acknowledged-ALARM-Meldungen und den passenden Check_MK Check dafür und einen Check für "Monitored"-Leistungsmesser, d.h. HM-ES-PMSw1-Pl, aber der ist noch in der Test-Phase.

Wie möchtest Du sowas am liebsten haben. Gitub-Push-Request? Oder einfach hier? Die Code schnippsel sind recht kurz, das ALARM-Addon ist eigentlich fast nur Alchy Code ;)

Falls es jemand direkt haben möchte:

check_mk_agent-Plugin, zu kopieren nach /usr/local/addons/check_mk_agent/plugins/alarm.tcl:

Code: Alles auswählen

#!/bin/tclsh
#
load tclrega.so
load tclrpc.so


proc get_homematic_alarms { } {
  array set result [rega_script {

object oTmpArray = dom.GetObject(ID_SYSTEM_VARIABLES);
string sTmp;
string slist ="";
foreach(sTmp, oTmpArray.EnumIDs())
{
  object oTmp = dom.GetObject(sTmp);
  if ( (oTmp.ValueSubType() == istAlarm) && (oTmp.AlState() == asOncoming) )
  {
    string sTriggerDesc = "keine Beschreibung";
    string sLastTriggerOut= "unbekannt";
    object oLastTriggerDP = dom.GetObject( oTmp.LastTriggerID() );
    if (oLastTriggerDP)
    {
      string sLastTriggerChannel = dom.GetObject(oLastTriggerDP.Channel());
      string sLastTriggerChHssType = dom.GetObject(sLastTriggerChannel).HssType();
      object oLastTriggerDevice = dom.GetObject(sLastTriggerChannel.Device());
      string sLastTriggerDeviceHssType = oLastTriggerDevice.HssType();
      string sLastTriggerDeviceSerial = oLastTriggerDevice.Address();
      ! sLastTriggerOut = sLastTriggerChannel.Name() #" ( Serial: "#sLastTriggerDeviceSerial #" Typ: "  #sLastTriggerDeviceHssType #" )" ;
      sLastTriggerOut = sLastTriggerChannel.Name();
    }
    string sTriggerDesc = oTmp.DPInfo();


    ! oTmp.Name()                                         Wasseralarm
    ! oTmp.AlCounter()                                    # Auslöungen
    ! oTmp.ValueName()                                    ausgelöst, nicht ausgelöst
    ! oTmp.Timestamp().ToString("%d.%m.%y %H:%M Uhr")     letzte Auslösung
    ! sLastTriggerOut                                     Wassermelder Aquarium (HmIP-SWD 001898A9A36CF2:1)
    ! sTriggerDesc                                        DPInfo()

    WriteLine("ALARM_MSG;" # oTmp.Name() # ";" # sLastTriggerOut # ";" # oTmp.ValueName() # ";" # oTmp.Timestamp().ToString("%Y-%m-%d %H:%M:%S")  )

  }
}

  }]
  return $result(STDOUT)
}

puts [string trim [get_homematic_alarms]]
Im Check_MK: der check /opt/omd/sites/<sitename>/local/share/check_mk/checks/homematic_alarms

Code: Alles auswählen

#!/usr/bin/python

def parse_homematic_alarms(info):
  result = { }
  for line in info:
    key = line[0]
    device = result.get(key)
    if key == 'ALARM_MSG':
      if device is None:
        device = []
        result[key] = device
      device.append(line[1:])
  return result

def inventory_homematic_alarms(parsed):
  yield 'ALARM Messages', None

def check_homematic_alarms(item, params, parsed):
  messages = parsed.get('ALARM_MSG', None);

  state = 0
  devices = []

  if messages is not None:
    #with open("/tmp/bla", "aw") as bla:
    #  bla.write(repr(messages))

    for msg,attr in messages.items():
      if item == 'ALARM Messages':
        state = 2
        devices.append(msg + ": " + attr[0] + ", state: " + attr[1] + " (last: " + attr[2] + ")")

  if state == 0:
    return 0, 'No issues reported'

  return state, ', '.join(devices)

check_info['homematic.alarms'] = {
  'check_function':      check_homematic_alarms,
  'inventory_function':  inventory_homematic_alarms,
  'parse_function':      parse_homematic_alarms,
  'service_description': "Homematic %s",
}
Das ergibt dann bei z.B.
alarms_ccu.png
folgenden Check_MK Alarm:
alarms.png
alarms.png (10.65 KiB) 2445 mal betrachtet
-=FuF=-
(Christiian)

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: Check MK für die CCU

Beitrag von deimos » 08.04.2019, 09:18

Hi,

mir ist der der Sinn des TCL Addons nicht ganz klar (das mag aber auch meinen rudimentären Kenntnissen der Rega geschuldet sein).
Ich dachte, die Alarmmeldungen kommen als Servicemeldung über "dom.GetObject(ID_SERVICES)" rein und nicht über "dom.GetObject(ID_SYSTEM_VARIABLES)". Und diese werden auch jetzt schon komplett an den check_mk Server übertragen.
Wenn ich mich da irre, dann würde es absolut Sinn machen, dass nicht als Plugin einzubauen, sondern direkt in den Core, alleine schon deswegen, weil das dann keinen zusätzlichen Prozess erzeugt. Die Plugins sind an sich nur für wirklich Benutzerspezifische Sachen gedacht, bei einem Check für Alarmmeldungen bin ich sofort dazu bereit, dass als Teil des Kerns zu betrachten.

Viele Grüße
Alex

Antworten

Zurück zu „Sonstige Addons“