Hallo werte Gemeinschaft!
Ich versuche mich an einem SNMP-Check für einen BACnet-Gateway,
scheitere aber momentan fulminant an der Umsetzung gemäß
<https://mathias-kettner.de/checkmk_devel_snmpbased.html>
Bei meinen bisherigen SNMP-Checks hatte ich immer ein echtes Array,
welches mindestens aus Sensor und Wert bestand.
Am aktuellen Beispiel habe ich jedoch nur Werte. Wie bekomme ich nun
die Sensoren, die zu Fuß eingetragen werden müssen in eine
check_mk-versträgliche Script-Syntax?
Hier ein paar Eckdaten:
Die Ausgabe des kompletten(!) snmpwalk ist recht übersichtlich. Eine
MIB habe ich noch nicht gefunden, hoffe da aber noch ein wenig auf die
"Try'n'Error-Methode":
OMD[jsc]
snmpwalk -v2c -c COMMUNITY -On HOST .1.3.6.1.4.1.36373
.1.3.6.1.4.1.36373.1.1.0 = STRING: "SNMP-Agent internal"
.1.3.6.1.4.1.36373.1.2.0 = STRING: "HHO-Automation, Uwe Hanke"
.1.3.6.1.4.1.36373.1.3.0 = STRING: "http://www.hho-automation.de"
.1.3.6.1.4.1.36373.10.1 = INTEGER: 1
.1.3.6.1.4.1.36373.10.2 = INTEGER: 41
.1.3.6.1.4.1.36373.10.3 = INTEGER: 283
.1.3.6.1.4.1.36373.10.4 = INTEGER: 365
.1.3.6.1.4.1.36373.10.5 = INTEGER: 1997
.1.3.6.1.4.1.36373.10.6 = INTEGER: 1944
.1.3.6.1.4.1.36373.10.7 = INTEGER: 1966
.1.3.6.1.4.1.36373.10.8 = INTEGER: 1920
.1.3.6.1.4.1.36373.10.9 = INTEGER: 391
.1.3.6.1.4.1.36373.10.10 = INTEGER: 2096
.1.3.6.1.4.1.36373.10.11 = INTEGER: 1939
.1.3.6.1.4.1.36373.10.12 = INTEGER: 1948
.1.3.6.1.4.1.36373.10.13 = INTEGER: 1948
.1.3.6.1.4.1.36373.10.14 = INTEGER: 1949
.1.3.6.1.4.1.36373.10.15 = INTEGER: 1948
.1.3.6.1.4.1.36373.10.16 = INTEGER: 1953
.1.3.6.1.4.1.36373.10.17 = INTEGER: 1938
.1.3.6.1.4.1.36373.10.18 = INTEGER: 0
.1.3.6.1.4.1.36373.10.19 = INTEGER: 1716
.1.3.6.1.4.1.36373.10.20 = INTEGER: 1920
.1.3.6.1.4.1.36373.10.21 = INTEGER: 1941
.1.3.6.1.4.1.36373.10.22 = INTEGER: 1885
.1.3.6.1.4.1.36373.10.23 = INTEGER: 1
.1.3.6.1.4.1.36373.10.24 = INTEGER: 7000
.1.3.6.1.4.1.36373.10.25 = INTEGER: 1917
.1.3.6.1.4.1.36373.10.26 = INTEGER: 3529
.1.3.6.1.4.1.36373.10.27 = INTEGER: 3766
.1.3.6.1.4.1.36373.10.28 = INTEGER: 3686
.1.3.6.1.4.1.36373.10.29 = INTEGER: 3701
.1.3.6.1.4.1.36373.10.30 = INTEGER: 4000
.1.3.6.1.4.1.36373.10.31 = INTEGER: 2044
.1.3.6.1.4.1.36373.10.32 = INTEGER: 1971
.1.3.6.1.4.1.36373.10.33 = INTEGER: 51
.1.3.6.1.4.1.36373.10.34 = INTEGER: 10000
.1.3.6.1.4.1.36373.10.35 = INTEGER: 1
.1.3.6.1.4.1.36373.10.36 = INTEGER: 622
.1.3.6.1.4.1.36373.10.37 = INTEGER: 1775
.1.3.6.1.4.1.36373.10.38 = INTEGER: 1255
.1.3.6.1.4.1.36373.10.39 = INTEGER: 1
.1.3.6.1.4.1.36373.10.40 = INTEGER: 1831
.1.3.6.1.4.1.36373.10.41 = INTEGER: 2074
.1.3.6.1.4.1.36373.10.42 = INTEGER: 1
.1.3.6.1.4.1.36373.10.43 = INTEGER: 1915
.1.3.6.1.4.1.36373.10.44 = INTEGER: 2081
.1.3.6.1.4.1.36373.10.45 = INTEGER: 1
.1.3.6.1.4.1.36373.10.46 = INTEGER: 10000
.1.3.6.1.4.1.36373.10.47 = INTEGER: 1
.1.3.6.1.4.1.36373.10.48 = INTEGER: 0
.1.3.6.1.4.1.36373.10.49 = INTEGER: 738
.1.3.6.1.4.1.36373.10.50 = INTEGER: 1984
.1.3.6.1.4.1.36373.10.51 = INTEGER: 1180
.1.3.6.1.4.1.36373.10.52 = INTEGER: 0
.1.3.6.1.4.1.36373.10.53 = INTEGER: 0
.1.3.6.1.4.1.36373.10.54 = INTEGER: 0
.1.3.6.1.4.1.36373.10.55 = INTEGER: 0
.1.3.6.1.4.1.36373.10.56 = INTEGER: 0
.1.3.6.1.4.1.36373.10.57 = INTEGER: 0
.1.3.6.1.4.1.36373.10.58 = INTEGER: 0
.1.3.6.1.4.1.36373.10.59 = INTEGER: 0
.1.3.6.1.4.1.36373.10.60 = INTEGER: 0
.1.3.6.1.4.1.36373.10.61 = INTEGER: 0
.1.3.6.1.4.1.36373.10.62 = INTEGER: 0
.1.3.6.1.4.1.36373.10.63 = INTEGER: 0
.1.3.6.1.4.1.36373.10.64 = INTEGER: 0
.1.3.6.1.4.1.36373.10.65 = INTEGER: 0
.1.3.6.1.4.1.36373.10.66 = INTEGER: 0
.1.3.6.1.4.1.36373.10.67 = INTEGER: 0
.1.3.6.1.4.1.36373.10.68 = INTEGER: 0
.1.3.6.1.4.1.36373.10.69 = INTEGER: 0
.1.3.6.1.4.1.36373.10.70 = INTEGER: 0
.1.3.6.1.4.1.36373.10.71 = INTEGER: 0
.1.3.6.1.4.1.36373.10.72 = INTEGER: 0
.1.3.6.1.4.1.36373.10.73 = INTEGER: 0
.1.3.6.1.4.1.36373.10.74 = INTEGER: 0
.1.3.6.1.4.1.36373.10.75 = INTEGER: 0
.1.3.6.1.4.1.36373.10.76 = INTEGER: 0
.1.3.6.1.4.1.36373.10.77 = INTEGER: 0
.1.3.6.1.4.1.36373.10.78 = INTEGER: 0
.1.3.6.1.4.1.36373.10.79 = INTEGER: 0
.1.3.6.1.4.1.36373.10.80 = INTEGER: 0
.1.3.6.1.4.1.36373.10.81 = INTEGER: 0
.1.3.6.1.4.1.36373.10.82 = INTEGER: 0
.1.3.6.1.4.1.36373.10.83 = INTEGER: 0
.1.3.6.1.4.1.36373.10.84 = INTEGER: 0
.1.3.6.1.4.1.36373.10.85 = INTEGER: 0
.1.3.6.1.4.1.36373.10.86 = INTEGER: 0
.1.3.6.1.4.1.36373.10.87 = INTEGER: 0
.1.3.6.1.4.1.36373.10.88 = INTEGER: 0
.1.3.6.1.4.1.36373.10.89 = INTEGER: 0
.1.3.6.1.4.1.36373.10.90 = INTEGER: 0
.1.3.6.1.4.1.36373.10.91 = INTEGER: 0
.1.3.6.1.4.1.36373.10.92 = INTEGER: 0
.1.3.6.1.4.1.36373.10.93 = INTEGER: 0
.1.3.6.1.4.1.36373.10.94 = INTEGER: 0
.1.3.6.1.4.1.36373.10.95 = INTEGER: 0
.1.3.6.1.4.1.36373.10.96 = INTEGER: 0
.1.3.6.1.4.1.36373.10.97 = INTEGER: 0
.1.3.6.1.4.1.36373.10.98 = INTEGER: 0
.1.3.6.1.4.1.36373.10.99 = INTEGER: 0
.1.3.6.1.4.1.36373.10.100 = INTEGER: 0
.1.3.6.1.4.1.36373.10.100 = No more variables left in this MIB View
(It is past the end of the MIB tree)
OMD[jsc]
Gemäß der check_mk-Doku mit dem Script angefangen. Logischer Weise
fehlen mir die Namen im Array (siehe snmp_info):
OMD[jsc]:~/local/share/check_mk/checks$ cat bacnetgw
def inventory_bacnetgw(info):
# Debug: lets see how the data we get looks like
print (info)
return []
def check_bacnetgw(item, params, info):
return (3, "UNKNOWN - not yet implemented")
check_info["bacnetgw"] = \
(check_bacnetgw, "Sensor %s", 0, inventory_bacnetgw)
snmp_info["bacnetgw"] = ( ".1.3.6.1.4.1.36373", [ "10" ] )
OMD[jsc]
Wie man bei der Abfrage sieht:
OMD[jsc]
check_mk --checks bacnetgw -I HOST
[['1'], ['41'], ['284'], ['367'], ['1975'], ['1947'], ['1937'],
['1921'], ['392'], ['2084'], ['1941'], ['1945'], ['1938'], ['1945'],
['1936'], ['1931'], ['1939'], ['0'], ['1716'], ['1921'], ['1941'],
['1886'], ['1'], ['7000'], ['1921'], ['3516'], ['3760'], ['3692'],
['3683'], ['4000'], ['2047'], ['1955'], ['51'], ['10000'], ['1'],
['622'], ['1775'], ['1255'], ['1'], ['1831'], ['2074'], ['1'],
['1915'], ['2081'], ['1'], ['10000'], ['1'], ['0'], ['737'], ['1984'],
['1173'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'],
['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'],
['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'],
['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'],
['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'], ['0'],
['0']]
OMD[jsc]:~%
Wie bekomme ich den Check also so geschrieben, das ich intern Namen zu
den Werten vergeben kann? Ich stehe da scheinbar ein wenig auf dem
Schlauch...
Danke euch für einen Schubser in die richtige Richtung,
Georg
- --
Georg Schilling
Technologie-Support-Team
Juelich Supercomputing Centre (JSC)
Phone: 02461-61-96530 Mobile: 0172-5295475
Fax: 02461-61-2810 Skype: georg_schilling
WWW: http://www.fz-juelich.de/jsc
···
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------