Hallo CheckMK Community,
ich brauche Hilfe bzgl. einem eigenen Check, es besteht folgendes Problem:
Auf einem Linux Host habe ich ein Agenten-Plugin geschrieben, das mir mehrere Zahlen ausgibt.
Bei diesen Zahlen handelt es sich teilweise um Sekunden und teilweise um Dateigrößen in bytes.
Bei zwei dieser Zahlen habe ich jedoch das Problem, dass ich sie in einer if Bedingung nicht verwerten kann.
Nach längerem testen konnte ich das Problem etwas eingrenzen, es sieht so aus, als ob die Formatierung zum Integer Dateityp nicht klappt.
Hier mein Check Plugin:
def inventory_***(info):
yield None, None
def check_***(_no_item, _no_params, info):
for line in info:
backlogTime = line[0].rstrip("microseconds")
backlogSize = line[1].rstrip("bytes")
logTime = line[2]
logTimeStamp = line[3]
int(backlogTime)
int(backlogSize)
int(logTime)
int(logTimeStamp)
if backlogTime < 11 and backlogSize < 11 and logTime < 21 and logTimeStamp < 21:
return 0, "OK"
check_info["***"] = {
'check_function': check_***,
'inventory_function': inventory_***,
'service_description': 'Description'
}
(Das Plugin ist so natürlich noch nicht fertig)
Wenn ich “logTime” und “logTimeStamp” aus der if Bedingung entferne funktioniert es.
Laut print type sind alle Variablen vom Typ unicode (selbst nach dem Umwandeln mit int()?). Wenn ich sie vor dem Umwandeln auf Integer auf z.B. UTF-8 enkodiere macht er mir die Umwandlung zum int nicht und die Variablen bleiben beim String Dateityp.
Was mache ich falsch bzw. was muss ich noch machen damit ich mit den beiden Variablen in der if Bedingung arbeiten kann?
Falls es hilft die Ausgabe des Agenten sieht so aus:
[[u’0microseconds’, u’0bytes’, u’23’, u’23’]]
Falls ihr noch weitere Infos braucht lasst es mich bitte wissen.
Schonmal im Voraus danke für die Hilfe.