Hallo CheckMK Community,
ich möchte einen SNMP Check erstellen, dieser Check fragt eine bestimmte OID ab. Von dieser OID bekomme ich einen Integer-Wert zurück, dieser Integer kann nur 1 oder 0 sein. Mein Check soll jetzt prüfen ob entweder eine 0, dann ist der Check OK, oder eine 1 zurückkommt. Dazu habe ich am Server unter /omd/sites/*****/local/share/check_mk/checks ein eigenes Python Skript wie in der “Writing SNMP based checks” Anleitung beschrieben erstellt. Das Skript sieht so aus:
def inventory_sbc_clusterstate(info):
for state in info:
yield state, None
def check_sbc_clusterstate(item, params, info):
if state == "[u'0']":
return (0, "OK" )
else:
return (2, "Fail")
check_info["sbc_clusterstate"] = {
'check_function' : check_sbc_clusterstate,
'inventory_function' : inventory_sbc_clusterstate,
'service_description' : 'SBCState',
'snmp_info' : ( ".1.3.6.1.4.1.5003.9.10.3.1.2.1", [ "6" ] ),
}
Wenn ich dann aber im WATO versuche einen Full Scan auszuführen bekomme ich folgende Fehlermeldung:
Error running automation call try-inventory (exit code 2), error:
unhashable type: 'list'
Wenn ich jetzt jedoch bei der Inventory Funktion bei yield das None entferne sagt er mir folgendes:
*HOST*: Check sbc_clusterstate returned invalid discovery data (entry not a tuple): "[u'0']"
Er sagt ja “entry not a tuple” aber eigentlich müsste er doch als Ausgabe (0, “OK” ) oder (2, “Fail”) bekommen. Wobei 0 der OK Zustand und 2 der Crit Zustand ist, zusammen mit dem Text “OK” oder eben “Fail” ist es dann doch eine tuple?
So wie ich das sehe gibt er mir also nicht den return Wert aus der Check Funktion, sondern aus der Inventory Funktion aus. Was also muss ich machen damit er im WATO nicht mehr den Rückgabewert aus der Inventory Funktion, sondern aus der Check Funktion ausgibt?
Noch zur Info, ich nutze CheckMK Version 1.6.0p10 Enterprise.
Schonmal im Voraus Vielen Dank für eure Hilfe. Und bitte entschuldigt falls ich hier etwas offensichtliches übersehe, aber ich habe keinerlei Vorkenntnisse mit Python oder allgemein im Programmieren.