CMK version: 2.3.0p10
OS version: Linux Debian
Hallo,
wir möchten ein SNMP-basiertes Check-Plugin schreiben um von einer Sophos Firewall die IPSec VPN Tunnels nach deren Namen und Status abzufragen.
Die Firewall ist als Host in CheckMK angelegt und auch per SNMP abfragbar (ein paar Informationen erhalten wir).
Das Skript was wir erstellt haben ist folgendes:
*#!/usr/bin/env python3*
*# -*- coding: utf-8 -*-*
*import time*
*from cmk.agent_based import (*
* register,*
* Result,*
* SNMPTree,*
* State,*
* contains,*
*)*
*register.snmp_section(*
* name="sophosxg_ipsec_vpn_tunnels",*
* fetch=SNMPTree(*
* base="1.3.6.1.4.1.2604.5.1.6",*
* oids=["2", "9"], # OID 2 Name, OID 9 Status*
* ),*
* detect=contains(".1.3.6.1.4.1.2604.5.1.1.2", "XGS"),*
*)*
*def discover_sophosxg_ipsec_vpn_tunnels(section):*
* yield Service()*
*def check_sophosxg_ipsec_vpn_tunnels(section):*
* tunnel_state = section[0][0]*
* tunnel_name = section[0][1] # Tunnel-Name aus SNMP-Daten extrahieren*
* state_name = "Unknown"*
* if tunnel_state == "0":*
* state_name = "Inactive"*
* state = State.CRIT*
* elif tunnel_state == "1":*
* state_name = "Active"*
* state = State.OK*
* elif tunnel_state == "2":*
* state_name = "Partially Active"*
* state = State.WARN*
* else:*
* state_name = "Unknown"*
* state = State.UNKNOWN*
* yield Result(*
* state=state,*
* summary=f"IPSec VPN Tunnel '{tunnel_name}' State: {state_name}",*
* )*
*register.check_plugin(*
* name="sophosxg_ipsec_vpn_tunnels",*
* service_name="IPSec VPN Tunnel Status",*
* discovery_function=discover_sophosxg_ipsec_vpn_tunnels,*
* check_function=check_sophosxg_ipsec_vpn_tunnels,*
*)*
Das Skript liegt unter ~/local/lib/python3/cmk_addons/plugins/sophos/agent_based$ ab.
Starten wir mit dem Befehlt cmk-R den Monitoring-Dienst neu, erhalten wir folgende Fehlermeldung:
Error in agent based plugin: cmk_addons.plugins.sophos.agent_based.sophos_ipsec_tunnels: cannot import name ‘register’ from ‘cmk.agent_based’ (unknown location)Generating configuration for core (type nagios)…
Ein snmpwalk auf dem Host mit den OIDs ist erfolgreich und liefert auch die entsprechenden Werte zurück.
Leider kommen wir nicht weiter und erhoffen uns Hilfe durch das Forum