Checkmk 插件帮助让它运行

问题描述 投票:0回答:0

有人可以给我提示吗,为什么这不能正常工作?

#!/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 中选择的服务。

现在我的问题是,是否有人有编码这些东西的经验并且可以帮助我一点,我将非常感激!

致以诚挚的问候

卢卡斯

python snmp check-mk
© www.soinside.com 2019 - 2024. All rights reserved.