[add] #1 Überwachung von Speicherplatzverbrauch - vergessene Datei
This commit is contained in:
parent
9f9464d13b
commit
f9cf26da7d
105
source/logic/checks/generic_remote.py
Normal file
105
source/logic/checks/generic_remote.py
Normal 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" : {}
|
||||
}
|
||||
Loading…
Reference in a new issue