有人可以给我提示吗,为什么这不能正常工作?
#!/usr/bin/env python3
# Importieren Sie die notwendigen Klassen und Funktionen
from cmk.base.checkers import SNMPInfo, render_check_result
from cmk.utils.snmp import SNMPParser
# Definieren Sie die Check-Parameter und Service-Beschreibungen
check_info["cpu_utilization"] = {
"check_function": lambda item, params, info: check_cpu_utilization(item, params, info),
"inventory_function": lambda info: [],
"service_description": "CPU Utilization",
"snmp_info": (
"1.3.6.1.4.1.2011.6.3.33", # CPU OID (Custom OID for CPU Utilization)
["1"], # Index der CPU (falls mehrere CPUs vorhanden sind)
fetch_cpu_utilization # Die Funktion zum Abrufen der CPU-Auslastung
),
}
# Funktion zum Abrufen der CPU-Auslastung über SNMP
def fetch_cpu_utilization(snmp_parser: SNMPParser, oid: str, index: str):
cpu_util = snmp_parser.get_float(oid + index)
if cpu_util is not None:
return int(cpu_util)
return None
# Die eigentliche Überwachungsfunktion, die die CPU-Auslastung abruft und auswertet
def check_cpu_utilization(item, params, info):
ip = item["ipaddress"]
snmp_info = get_cpu_snmp_info()
cpu_utilization = info.fetch("cpu_utilization", snmp_info)
if cpu_utilization is None:
# Es konnte keine CPU-Auslastung abgerufen werden
return render_check_result(
state=3,
check_plugin_name="cpu_utilization",
message="CPU Utilization could not be retrieved.",
)
warning_threshold = params.get("warning_threshold", 80)
critical_threshold = params.get("critical_threshold", 90)
# CPU-Auslastung für jede einzelne CPU als Service ausgeben
for cpu_index, cpu_util in enumerate(cpu_utilization):
service_name = f"CPU_Utilization_{cpu_index}"
state, message = check_thresholds(cpu_util, warning_threshold, critical_threshold)
# Ausgabe der CPU-Auslastung als Checkmk-Service
yield render_check_result(
state=state,
check_plugin_name="cpu_utilization",
service_description=service_name,
message=message,
performance_data=[(f"cpu_{cpu_index}", cpu_util, "CPU Utilization")]
)
def check_thresholds(value, warning, critical):
if value >= critical:
return 2, f"CPU Utilization is CRITICAL - {value}%"
elif value >= warning:
return 1, f"CPU Utilization is WARNING - {value}%"
else:
return 0, f"CPU Utilization is OK - {value}%"
我想使用这个脚本作为 checkmk 插件来通过 snmp 监控 swicht 的 cpu_utilization,但我什至没有从这个脚本中获得在 checkmk 中选择的服务。
现在我的问题是,是否有人有编码这些东西的经验并且可以帮助我一点,我将非常感激!
致以诚挚的问候
卢卡斯