USV per SNMP abfragen

Hallo,
Ich möchte meine neue USV gerne ins Monitoring aufnehmen :smiley:
Ein SNMP walk auf der Konsole sieht auch gut aus:

> iso.3.6.1.2.1.1.1.0 = STRING: "UPS"
> iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.3808
> iso.3.6.1.2.1.1.3.0 = Timeticks: (523357) 1:27:13.57
> iso.3.6.1.2.1.1.4.0 = STRING: "contact"
> iso.3.6.1.2.1.1.5.0 = STRING: "name"
> iso.3.6.1.2.1.1.6.0 = STRING: "location"
> iso.3.6.1.2.1.1.7.0 = INTEGER: 72
> iso.3.6.1.2.1.11.1.0 = Counter32: 99
> iso.3.6.1.2.1.11.3.0 = Counter32: 0
> iso.3.6.1.2.1.11.4.0 = Counter32: 6
> iso.3.6.1.2.1.11.5.0 = Counter32: 0
> iso.3.6.1.2.1.11.6.0 = Counter32: 0
> iso.3.6.1.2.1.11.30.0 = INTEGER: 2
> iso.3.6.1.2.1.11.31.0 = Counter32: 0
> iso.3.6.1.2.1.11.32.0 = Counter32: 0
> iso.3.6.1.2.1.33.1.1.1.0 = STRING: "CPS"
> iso.3.6.1.2.1.33.1.1.2.0 = STRING: "BR700ELCD"
> iso.3.6.1.2.1.33.1.1.3.0 = STRING: "0x42 0x50 0x46 0x45 0x31 0x30 0x39 0x26 0x31 0x4F 0x33 0x2E 0x78 "
> iso.3.6.1.2.1.33.1.1.4.0 = STRING: "4.9.0"
> iso.3.6.1.2.1.33.1.1.5.0 = STRING: "hostname"
> iso.3.6.1.2.1.33.1.2.1.0 = INTEGER: 2
> iso.3.6.1.2.1.33.1.2.2.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.2.3.0 = Gauge32: 42
> iso.3.6.1.2.1.33.1.2.4.0 = INTEGER: 99
> iso.3.6.1.2.1.33.1.2.5.0 = Gauge32: 137
> iso.3.6.1.2.1.33.1.3.2.0 = Gauge32: 1
> iso.3.6.1.2.1.33.1.3.3.1.1.1 = INTEGER: 1
> iso.3.6.1.2.1.33.1.3.3.1.2.1 = Gauge32: 0
> iso.3.6.1.2.1.33.1.3.3.1.3.1 = Gauge32: 231
> iso.3.6.1.2.1.33.1.3.3.1.4.1 = Gauge32: 0
> iso.3.6.1.2.1.33.1.3.3.1.5.1 = Gauge32: 0
> iso.3.6.1.2.1.33.1.4.1.0 = Gauge32: 3
> iso.3.6.1.2.1.33.1.4.2.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.4.3.0 = Gauge32: 1
> iso.3.6.1.2.1.33.1.4.4.1.1.1 = INTEGER: 1
> iso.3.6.1.2.1.33.1.4.4.1.2.1 = Gauge32: 230
> iso.3.6.1.2.1.33.1.4.4.1.3.1 = Gauge32: 0
> iso.3.6.1.2.1.33.1.4.4.1.4.1 = Gauge32: 0
> iso.3.6.1.2.1.33.1.4.4.1.5.1 = Gauge32: 13
> iso.3.6.1.2.1.33.1.5.2.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.6.1.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.7.1.0 = OID: iso.3.6.1.2.1.33.1.7.7.1
> iso.3.6.1.2.1.33.1.7.2.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.7.3.0 = INTEGER: 6
> iso.3.6.1.2.1.33.1.7.4.0 = ""
> iso.3.6.1.2.1.33.1.7.5.0 = Timeticks: (0) 0:00:00.00
> iso.3.6.1.2.1.33.1.7.6.0 = Timeticks: (0) 0:00:00.00
> iso.3.6.1.2.1.33.1.8.1.0 = INTEGER: 2
> iso.3.6.1.2.1.33.1.8.2.0 = INTEGER: -1
> iso.3.6.1.2.1.33.1.9.3.0 = Gauge32: 230
> iso.3.6.1.2.1.33.1.9.4.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.9.5.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.9.6.0 = Gauge32: 0
> iso.3.6.1.2.1.33.1.9.8.0 = INTEGER: 2
> iso.3.6.1.2.1.33.1.9.9.0 = Gauge32: 165
> iso.3.6.1.2.1.33.1.9.10.0 = Gauge32: 290

Jetzt erhalten ich in cmk aber nur sehr wenig davon, mache ich was falsch? Die Client Conf:

> USV-H3                                                                         
> Addresses:              ##IP
> Tags:                   [address_family:ip-v4-only], [agent:no-agent], [criticality:prod], [ip-v4:ip-v4], [networking:lan], [piggyback:no-piggyback], [site:cmk], [snmp:snmp], [snmp_ds:snmp-v2]
> Labels:                 [cmk/device_type:ups], [cmk/site:cmk]
> Host groups:            check_mk
> Contact groups:         check-mk-notify, all
> Agent mode:             No agent
> Services:
>   checktype item params description groups
>   --------- ---- ------ ----------- ------
>   snmp_info None {}     SNMP Info         
>   uptime    None {}     Uptime
OMD[cmk]:~$ cmk --debug -vvn USV-H3
Checkmk version 2.2.0p14
+ FETCHING DATA
  Source: SourceInfo(hostname='USV-H3', ipaddress='##IP', ident='snmp', fetcher_type=<FetcherType.SNMP: 7>, source_type=<SourceType.HOST: 1>)
[cpu_tracking] Start [7fd094ffe490]
Read from cache: SNMPFileCache(USV-H3, path_template=/omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/{mode}/{hostname}, max_age=MaxAge(checking=0, discovery=90.0, inventory=90.0), simulation=False, use_only_cache=False, file_cache_mode=6)
Not using cache (Too old. Age is 27 sec, allowed is 0 sec)
[SNMPFetcher] Execute data source
  SNMP scan:
       Getting OID .1.3.6.1.2.1.1.1.0: Running 'snmpget -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -On -OQ -Oe -Ot ##IP .1.3.6.1.2.1.1.1.0'
SNMP answer: ==> ["UPS Local"]
b'UPS Local'
       Getting OID .1.3.6.1.2.1.1.2.0: Running 'snmpget -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -On -OQ -Oe -Ot ##IP .1.3.6.1.2.1.1.2.0'
SNMP answer: ==> [.1.3.6.1.4.1.3808]
b'.1.3.6.1.4.1.3808'
       Using cached OID .1.3.6.1.2.1.1.1.0: 'UPS Local'
   SNMP scan found                    snmp_uptime
Trying to acquire lock on /omd/sites/cmk/tmp/check_mk/snmp_scan_cache/USV-H3.##IP
Got lock on /omd/sites/cmk/tmp/check_mk/snmp_scan_cache/USV-H3.##IP
Releasing lock on /omd/sites/cmk/tmp/check_mk/snmp_scan_cache/USV-H3.##IP
Released lock on /omd/sites/cmk/tmp/check_mk/snmp_scan_cache/USV-H3.##IP
snmp_info: Fetching data (SNMP walk cache is enabled: Use any locally cached information)
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.1'
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.2'
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.4'
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.5'
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.6'
snmp_uptime: Fetching data (SNMP walk cache is enabled: Use any locally cached information)
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.1.3'
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##removed -x DES -X ##removed -m "" -M "" -Cc -OQ -OU -On -Ot ##IP .1.3.6.1.2.1.25.1.1'
Write data to cache file /omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/checking/USV-H3
Trying to acquire lock on /omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/checking/USV-H3
Got lock on /omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/checking/USV-H3
Releasing lock on /omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/checking/USV-H3
Released lock on /omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/checking/USV-H3
[cpu_tracking] Stop [7fd094ffe490 - Snapshot(process=posix.times_result(user=0.010000000000000009, system=0.010000000000000009, children_user=0.18, children_system=0.01, elapsed=0.25999999791383743))]
+ PARSE FETCHER RESULTS
  HostKey(hostname='USV-H3', source_type=<SourceType.HOST: 1>)  -> Add sections: ['snmp_info', 'snmp_uptime']
Received no piggyback data
[cpu_tracking] Start [7fd093cdc710]
value store: synchronizing
Trying to acquire lock on /omd/sites/cmk/tmp/check_mk/counters/USV-H3
Got lock on /omd/sites/cmk/tmp/check_mk/counters/USV-H3
value store: loading from disk
Releasing lock on /omd/sites/cmk/tmp/check_mk/counters/USV-H3
Released lock on /omd/sites/cmk/tmp/check_mk/counters/USV-H3
SNMP Info            UPS Local, H3, location, user
Uptime               Up since Nov 25 2023 13:24:31, Uptime: 2 hours 28 minutes
[cpu_tracking] Stop [7fd093cdc710 - Snapshot(process=posix.times_result(user=0.0, system=0.0, children_user=0.0, children_system=0.0, elapsed=0.0))]
[snmp] Success, execution time 0.3 sec | execution_time=0.260 user_time=0.010 system_time=0.010 children_user_time=0.180 children_system_time=0.010 cmk_time_snmp=0.050

Noch eine Auffälligkeit: Der SNMP walk im Webinterface läuft nicht. Der Download enthält aber alle OID’s von oben.

CMK kennt einfach den Typ von USV nicht.

DETECT_UPS_GENERIC = any_of(
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.232.165.3"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.476.1.42"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.534.1"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.935"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.8072.3.2.10"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.2254.2.5"),
    equals(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.12551.4.0"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.2.1.33"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.534.2"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.5491"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.705.1"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.818.1.100.1"),
    startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.935"),
)

Deine OID ist hier “.1.3.6.1.4.1.3808” und diese ist nicht in der Liste enthalten.
Selbst die Sonderfunktion für CyperPower USV

DETECT_UPS_CPS = startswith(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.3808.1.1.1")

findet deinen Typ nicht da auch hier die OIDs nicht passen.

Lösung entweder die Detect Liste erweitern oder eigenen Check schreiben.
Würde halt die Detect Liste erstmal erweitern und schauen ob dann was brauchbares gefunden wird.

1 Like

Hallo Andreas, danke für den Hinweis.
Werde mein Glück versuchen :grinning:

mmmmh, bin mir nicht sicher ob ich dich richtig verstanden habe, aber das wäre eine Änderung die mein Docker Container nach einem Update verliert?
Habs dennoch mal versucht :laughing: ändert aber nichts; Hier abgekürzt:

DETECT_UPS_GENERIC = any_of(
    startswith(".1.3.6.1.2.1.1.1.0", ".1.3.6.1.4.1.3808"),
)

Jetzt versuche ich mich am eigenen Check; Habe die MIB, translate passt

cmk --snmptranslate USV-H3 > /tmp/translated
.1.3.6.1.2.1.1.1.0 UPS Local --> SNMPv2-MIB::sysDescr.0
.1.3.6.1.2.1.1.2.0 .1.3.6.1.4.1.3808 --> SNMPv2-MIB::sysObjectID.0
.1.3.6.1.2.1.1.3.0 2972992 --> DISMAN-EVENT-MIB::sysUpTimeInstance
.1.3.6.1.2.1.1.4.0 username --> SNMPv2-MIB::sysContact.0
.1.3.6.1.2.1.1.5.0 H3 --> SNMPv2-MIB::sysName.0
--snip

aber die Anfrage bleibt leer; Kann ich das Debuggen hier noch erweitern?
Denke ich mache einen Fehler beim “startswith”

OMD[cmk]:~$ cmk -vI --detect-plugins=cyberpower_setup_check USV-H3
Discovering services and host labels on: USV-H3
USV-H3:
+ FETCHING DATA
[TCPFetcher] Execute data source
[SNMPFetcher] Execute data source
+ ANALYSE DISCOVERED HOST LABELS
SUCCESS - Found no new host labels
+ ANALYSE DISCOVERED SERVICES
+ EXECUTING DISCOVERY PLUGINS (0)
SUCCESS - Found no new services

Wir haben SNMP-Plugin-Entwicklung in einen eigenen Artikel ausgelagert, ist noch nur auf Deutsch verfügbar:

Dafür habe ich auch Gerüste erstellt, damit müsste das eigentlich leichter gehen als beim Abschauen von vorhandenen Checks.

register.snmp_section(
    name = "flintstone_base_config",
    parse_function = parse_flintstone,
    detect = startswith(
        ".1.3.6.1.2.1.1.1.0",
        "Flintstones, Inc. Fred Router",
    ),
    fetch = SNMPTree(
        base = '.1.3.6.1.2.1.1',
        oids = ['4.0', '5.0', '6.0'],
    ),
)

Vielen Dank für den Artikel, ich bin dort bereits aktiv am lesen :slightly_smiling_face:
Dennoch finde ich meinen Fehler nicht.
Ich habe schon unzählige Variationen für den detect durch

register.snmp_section(
    name = "cybercheck_base_config",
    parse_function = parse_cybercheck,
    detect = startswith(
        ".1.3.6.1.2.1.1.1.0",
        "UPS local",
    ),
    fetch = SNMPTree(
        base = '.1.3.6.1.2.1.1',
        oids = ['4.0', '5.0', '6.0'],
    ),
)

Wo finde ich mehr Informationen zum SNMPTree Part, was genau macht:

oids = [‘4.0’, ‘5.0’, ‘6.0’]

Und bzgl. des detects; sysDescr sowie sysObjectID.

.1.3.6.1.2.1.1.1.0 UPS Local → SNMPv2-MIB::sysDescr.0
.1.3.6.1.2.1.1.2.0 .1.3.6.1.4.1.3808 → SNMPv2-MIB::sysObjectID.0

detect = all_of(
    startswith(".1.3.6.1.2.1.1.1.0", "UPS Local"),   # first check sysDescr
    contains(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.3808"),  # fetch vendor specific OID
)

Wäre das korrekt?

Das sind so ein paar Standards, die jedes Gerät liefern sollte:
https://www.alvestrand.no/objectid/1.3.6.1.2.1.1.html

Ich verstehen nicht warum die Abfrage leer bleibt. Und wie finde ich heraus ob der Fehler in der Sektion vom SNMPTree liegt? Ich kann keine Informationen finden was “oids 4.0” oder 5.0 usw. sein soll. :weary:

Bitte lasse mir mal Deinen kompletten SNMP-Walk des Gerätes zukommen. Gut möglich, dass der Artikel aus didaktischer Sicht ein paar Ergänzungen oder Hinweise benötigt.

sehr gern; anbei der snmpwalk:

root@H3:~# snmpwalk -v3 -l authPriv -u snmpv3usv -a MD5 -A ##########key -x DES -X ##########key ####ip
iso.3.6.1.2.1.1.1.0 = STRING: "UPS Local"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.3808
iso.3.6.1.2.1.1.3.0 = Timeticks: (19260636) 2 days, 5:30:06.36
iso.3.6.1.2.1.1.4.0 = STRING: "name"
iso.3.6.1.2.1.1.5.0 = STRING: "H3"
iso.3.6.1.2.1.1.6.0 = STRING: "location"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.11.1.0 = Counter32: 88022
iso.3.6.1.2.1.11.3.0 = Counter32: 34
iso.3.6.1.2.1.11.4.0 = Counter32: 0
iso.3.6.1.2.1.11.5.0 = Counter32: 0
iso.3.6.1.2.1.11.6.0 = Counter32: 0
iso.3.6.1.2.1.11.30.0 = INTEGER: 2
iso.3.6.1.2.1.11.31.0 = Counter32: 0
iso.3.6.1.2.1.11.32.0 = Counter32: 0
iso.3.6.1.2.1.33.1.1.1.0 = STRING: "CPS"
iso.3.6.1.2.1.33.1.1.2.0 = STRING: "BR700ELCD"
iso.3.6.1.2.1.33.1.1.3.0 = STRING: "0x42 0x50 0x46 0x45 0x31 0x30 0x39 0x26 0x31 0x4F 0x33 0x2E 0x78 "
iso.3.6.1.2.1.33.1.1.4.0 = STRING: "4.9.0"
iso.3.6.1.2.1.33.1.1.5.0 = STRING: "H3"
iso.3.6.1.2.1.33.1.2.1.0 = INTEGER: 2
iso.3.6.1.2.1.33.1.2.2.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.2.3.0 = Gauge32: 41
iso.3.6.1.2.1.33.1.2.4.0 = INTEGER: 100
iso.3.6.1.2.1.33.1.2.5.0 = Gauge32: 128
iso.3.6.1.2.1.33.1.3.2.0 = Gauge32: 1
iso.3.6.1.2.1.33.1.3.3.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.33.1.3.3.1.2.1 = Gauge32: 0
iso.3.6.1.2.1.33.1.3.3.1.3.1 = Gauge32: 231
iso.3.6.1.2.1.33.1.3.3.1.4.1 = Gauge32: 0
iso.3.6.1.2.1.33.1.3.3.1.5.1 = Gauge32: 0
iso.3.6.1.2.1.33.1.4.1.0 = Gauge32: 3
iso.3.6.1.2.1.33.1.4.2.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.4.3.0 = Gauge32: 1
iso.3.6.1.2.1.33.1.4.4.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.33.1.4.4.1.2.1 = Gauge32: 230
iso.3.6.1.2.1.33.1.4.4.1.3.1 = Gauge32: 0
iso.3.6.1.2.1.33.1.4.4.1.4.1 = Gauge32: 0
iso.3.6.1.2.1.33.1.4.4.1.5.1 = Gauge32: 14
iso.3.6.1.2.1.33.1.5.2.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.6.1.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.7.1.0 = OID: iso.3.6.1.2.1.33.1.7.7.1
iso.3.6.1.2.1.33.1.7.2.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.7.3.0 = INTEGER: 6
iso.3.6.1.2.1.33.1.7.4.0 = ""
iso.3.6.1.2.1.33.1.7.5.0 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.33.1.7.6.0 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.33.1.8.1.0 = INTEGER: 2
iso.3.6.1.2.1.33.1.8.2.0 = INTEGER: -1
iso.3.6.1.2.1.33.1.9.3.0 = Gauge32: 230
iso.3.6.1.2.1.33.1.9.4.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.9.5.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.9.6.0 = Gauge32: 0
iso.3.6.1.2.1.33.1.9.8.0 = INTEGER: 2
iso.3.6.1.2.1.33.1.9.9.0 = Gauge32: 165
iso.3.6.1.2.1.33.1.9.10.0 = Gauge32: 290

Sorry, ich hätte nochmal eine Verständnisfrage.
Liege ich grundsätzlich mit meiner Aussage richtig?

das ließt diese drei OID’s aus **contact, **name, **location

diese sind aber bereits bekannt, ergo gibt es keinen Treffer !? :crazy_face:

Sollte dann dieser Aufbau nicht mehr erkennen? :face_with_raised_eyebrow:

register.snmp_section(
    name = "cybercheck_base_config",
    parse_function = parse_cybercheck,
    detect = startswith(
        ".1.3.6.1.2.1.1.1.0",
        "UPS Local",
    ),
    fetch = [
    SNMPTree(
        base = ".1.3.6.1.2.1.1.1",
        oids = ["4.0", "5.0", "6.0"],
    ),
    SNMPTree(
        base = '.3.6.1.2.1.33.1.1',
        oids = ['1.0', '2.0', '4.0'],
    ),
    ],
)

Leider nicht. Hätte da noch jemand eine Tipp für mich?

Ich sehe schon, der Artikel braucht noch Feinarbeit. Du arbeitest Stellen, über die viele stolpern, sehr gut heraus. Aber bitte hab noch etwas Geduld mit mir.

1 Like

kann es sein das da eine .1 fehlt? zumindest fängt in deinem walk alles mit .iso.1 an.

    SNMPTree(
        base = '.1.3.6.1.2.1.33.1.1',
        oids = ['1.0', '2.0', '4.0'],
    ),
2 Likes

Ich bin froh das du das sagst :yum:

Danke für deinen Hinweis, habe es angepasst - leider bekomme ich weiterhin keine Daten:

OMD[cmk]:~/local/lib/check_mk/base/plugins/agent_based$ cmk -vvI --detect-plugins=cyberpower_setup_check USV-H3
Discovering services and host labels on: USV-H3
USV-H3:
+ FETCHING DATA
Source: SourceInfo(hostname='USV-H3', ipaddress='##ip', ident='snmp', fetcher_type=<FetcherType.SNMP: 7>, source_type=<SourceType.HOST: 1>)
[cpu_tracking] Start [7f75f0566590]
Read from cache: SNMPFileCache(USV-H3, path_template=/omd/sites/cmk/tmp/check_mk/data_source_cache/snmp/{mode}/{hostname}, max_age=MaxAge(checking=0, discovery=90.0, inventory=90.0), simulation=False, use_only_cache=False, file_cache_mode=1)
[SNMPFetcher] Execute data source
[cpu_tracking] Stop [7f75f0566590 - Snapshot(process=posix.times_result(user=0.0, system=0.0, children_user=0.0, children_system=0.0, elapsed=0.0))]
Source: SourceInfo(hostname='USV-H3', ipaddress='##ip', ident='piggyback', fetcher_type=<FetcherType.PIGGYBACK: 4>, source_type=<SourceType.HOST: 1>)
[cpu_tracking] Start [7f75f0566390]
Read from cache: NoCache(USV-H3, path_template=/dev/null, max_age=MaxAge(checking=0.0, discovery=0.0, inventory=0.0), simulation=False, use_only_cache=False, file_cache_mode=1)
[PiggybackFetcher] Execute data source
No piggyback files for 'USV-H3'. Skip processing.
No piggyback files for '##ip'. Skip processing.
[cpu_tracking] Stop [7f75f0566390 - Snapshot(process=posix.times_result(user=0.0, system=0.0, children_user=0.0, children_system=0.0, elapsed=0.0))]
+ PARSE FETCHER RESULTS
HostKey(hostname='USV-H3', source_type=<SourceType.HOST: 1>) -> Add sections: []
HostKey(hostname='USV-H3', source_type=<SourceType.HOST: 1>) -> Add sections: []
Received no piggyback data
+ ANALYSE DISCOVERED HOST LABELS
Trying host label discovery with:
Trying host label discovery with:
SUCCESS - Found no new host labels
+ ANALYSE DISCOVERED SERVICES
+ EXECUTING DISCOVERY PLUGINS (0)
Trying discovery with:
SUCCESS - Found no new services

Ich sehe nur noch OID’s … :rofl:

Eine bescheidene Frage am Rande; Wie mache ich das “register.check_plugin” wieder rückgängig?

register.check_plugin(
    name = "cybercheck_setup_check",
    sections = ["cybercheck_base_config"],
    service_name = "cybercheck setup check",
    discovery_function = discover_cybercheck,
    check_function = check_cybercheck,
)
OMD[cmk]:~$ cmk -L |grep cybercheck_setup_check 
cybercheck_setup_check                      snmp       (no man page present)

Cmk mag bei mir auch nicht den snmpwalk ausführen, nicht das es hier schon klemmt

OMD[cmk]:~$ cmk -vv --snmpwalk USV-H3
USV-H3:
Walk on ".1.3.6.1.2.1"...
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##sec -x DES -X ##sec -m "" -M "" -Cc -OQ -OU -On -Ot ++ip .1.3.6.1.2.1'
56 variables.
Walk on ".1.3.6.1.4.1"...
Running 'snmpbulkwalk -Cr10 -v3 -l authPriv -a md5 -u snmpv3usv -A ##sec -x DES -X ##sec -m "" -M "" -Cc -OQ -OU -On -Ot ++ip .1.3.6.1.4.1'
ERROR: SNMP error: Error in packet.
Reason: (genError) A general failure occured
Failed object: .1.3.6.1.4.1.3808.2.1.2.1.2.2
Error: SNMP Error on ++ip: Error in packet.
Reason: (genError) A general failure occured
Failed object: .1.3.6.1.4.1.3808.2.1.2.1.2.2 (Exit-Code: 2)
Wrote fetched data to /omd/sites/cmk/var/check_mk/snmpwalks/USV-H3.

Probier mal für diesen Host Inline SNMP zu deaktivieren (Deeplink):

Das Rätsel ist gelöst; Ich habe den Hersteller angeschrieben. Diese USV vom Type BR700ELCD wurde nicht freigegeben für den Einsatz Ihrer Software Powerpanel Business mit SNMP Aufbau, sondern lediglich der PowerPanel Personal Edition :face_with_diagonal_mouth:

Bitte entschuldigt diesen ganzen Wirbel!

Jetzt habe ich diese USV schon mal und freue mich dennoch, das ich gewisse Zustände gezielt per SNMPGET holen kann :slight_smile: im Test funktioniert alles, Werte stimmen auch :pray:
Es kostest etwas Zeit die OID‘s Zuordnung richtig aufzubauen, aber da helfen gängige MIB Browser.

Ein eigener Check “Individual program call instead of agent access” erledigt jetzt alles weitere:
Ein Frage habe ich noch zur Spannungsanzeige der Batterie das sind aktuell ca. 12,8 Volt.

Mein Check nimmt die auch exakt so mit: echo "$VOLTCMK \"battery voltage\" Voltage=$VOLT1;11,0;13,0"

<<<local>>>
0 "CyberPower Model" -  BR700ELCD
0 "UPS Connection over" -  Odroid
0 "System Location" -  --
0 "Contact" -  --
0 "UPS uptime" -  6 days, 6:11:46.51
0 "UPS battery status" - Normal
0 "UPS battery replacement status" - NO battery needs rplacing
0 "UPS output status" - onLine
0 "UPS advance output" Voltage=230;220;239|Load=14;0;100
3 "UPS selftest result" - Unknown
0 "UPS battery voltage" Voltage=12,8;11,0;13,0

verarbeitet wird das aber nicht, warum?

einfach auskommentieren? oder habe ich die Frage falsch verstanden?

# register.check_plugin(
#     name = "cybercheck_setup_check",
#     sections = ["cybercheck_base_config"],
#     service_name = "cybercheck setup check",
#     discovery_function = discover_cybercheck,
#     check_function = check_cybercheck,
# )

Der Eintrag „register.check_plugin“ hat nichts ausgeführt was gesondert rückgängig gemacht werden müsste? Ich lösche den check unter
~/local/lib/check_mk/base/plugins/agent_based und das wars?

das ist nur zur runtime. Da wird nichts permanet verändert. Kannst du ohne weiteres löschen, wenn du den Check da angelegt hast. Wenn du dir nicht sicher bist verschiebe die Datei einfach wonanders hin und schaue was passiert.

Alles klar; Gesichert hab ich es - Wollte nur sichergehen das nichts übrigbleibt. :grinning:
Hast du eine Idee warum die Volt Anzeige der Batterie ohne Nachkommastelle erscheint? Sieht so aus, als wäre das eine fest definierte Metrik. Kann ich das ändert?