[add] #1 Überwachung von Speicherplatzverbrauch - vergessene Datei

This commit is contained in:
Christian Neubauer 2023-03-03 14:58:00 +01:00
parent 9f9464d13b
commit f9cf26da7d

View file

@ -0,0 +1,105 @@
class implementation_check_kind_generic_remote(interface_check_kind):
'''
[implementation]
'''
def parameters_schema(self):
return {
"type": "object",
"additionalProperties": False,
"properties": {
"host" : {
"type" : "string"
},
"user" : {
"type" : "string"
},
"ssh_key" : {
"type" : "string"
},
"mount_point" : {
"type" : "string",
"default" : "/"
},
"threshold" : {
"type" : "integer",
"default" : 95,
"description" : "maximaler Füllstand in Prozent"
},
"strict" : {
"type" : "boolean",
"default" : False
}
},
"required": [
"host", "user", "ssh_key"
]
}
'''
[implementation]
'''
def normalize_conf_node(self, node):
if not "host" in node \
or not "user" in node \
or not "ssh_key" in node:
raise ValueError("MISSING STUFF!")
if not "mount_point" in node:
node["mount_point"] = "/"
if not "threshold" in node:
node["threshold"] = 95
if not "strict" in node:
node["strict"] = "/"
return node
'''
[implementation]
'''
def run(self, parameters):
SSH_COMMAND=string_coin("ssh -i {{ssh_key}} {{user}}@{{host}} \"df {{mount_point}} | tr -s ' '\"", parameters)
retval=shell_command(SSH_COMMAND)
if retval["return_code"] > 0:
return {
"condition" : enum_condition.unknown,
"info" : {
"error" : retval["stderr"]
}
}
else:
parts=retval["stdout"].split("\n")[-1].split(" ")
ret={
"device" : parts[0],
"used" : parts[2],
"avail" : parts[3],
"perc" : int(parts[4][:-1])
}
if ret["perc"] > parameters["threshold"]:
return {
"condition": (
enum_condition.critical
if parameters["strict"] else
enum_condition.warning
),
"info": {
"mount_point": parameters["mount_point"],
"device": ret["device"],
"used": ret["used"], # ToDo: Humanlesbarkeit herstellen
"available": ret["avail"], # ToDo: Humanlesbarkeit herstellen
"percentage": str(ret["perc"]) + "%",
"host" : parameters["host"],
"faults": [
translation_get("checks.generic_remote.overflow")
]
}
}
else:
return {
"condition": enum_condition.ok,
"info" : {}
}