Verfügbaren Speicher in Windows via SNMP bekommen

Gege­ben ist ein Win­dows Ser­ver 2008 R2. Er bie­tet SNMP an, das mit­ge­lie­fer­te.
Mein Begehr: den ver­füg­ba­ren Spei­cher im Zab­bix plot­ten und bei Unter­schrei­ten eines Schwell­wer­tes alar­mie­ren.
Natür­lich könn­te man das ele­gant mit einem Zab­bix-Agent machen (gibts ja auch für Win­dows) — aber der Admin ist etwas eigen… Man weiß ja nicht, was da alles pas­sie­ren kann und so 🙂
Also SNMP, da fra­ge ich ja schon mei­nen Rou­ter ab, muß mir also kei­ne Gedan­ken um die OID machen — die habe ich ja schon:

~$ snmpget -v 2c -c public 192.168.1.254 .1.3.6.1.4.1.2021.4.11.0
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 44664 kB
~$

Tja, das ist aller­dings net-snmp, und Win­dows ver­wen­det das natür­lich nicht, es weist mich mit

iso.3.6.1.4.1.2021.4.11.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

ab.
Goog­len, try-and-error läßt mich schon mal den gesam­ten ver­bau­ten Spei­cher fin­den (.1.3.6.1.2.1.25.2.2.0):

HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 33554432 KBytes

http://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?oid=1.3.6.1.2.1.25.2.3.1 hilft wei­ter:
snmp­walk über .1.3.6.1.2.1.25.2.3.1.3:

HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: C:\ Label:System  Serial Number nixda
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: D:\ Label:Data I  Serial Number nixda
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: E:\ Label:Data II  Serial Number nixda
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: F:\
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Physical Memory

Kraß. Die ers­ten vier Ein­trä­ge sind Lauf­wer­ke, danach Swap, danach RAM. Das heißt natür­lich, daß der Index für RAM abhän­gig von der Anzahl der Lauf­wer­ke ist 🤦🏼‍♂️- ich habe kei­ne Ahnung, was pas­siert, wenn man ein Netz­lauf­werk moun­ted.
Also wal­ken wir mal los über .1.3.6.1.2.1.25.2.3.1.6:

HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 23827134
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 33257694
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 25445922
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 400924
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 368162

Doch was sind 368162? Bytes, Liter, Pfer­de­äp­fel? Nun, es ist ja ein Lauf­werk, also sind es, trom­mel­wir­bel, hrStorageAllocationUnits. Jetzt muß man nur noch deren Grö­ße her­aus­be­kom­men. ein snmp­get auf .1.3.6.1.2.1.25.2.3.1.4.6 lie­fert:

HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes

Es wird schon mal sehr heiß!

~$ echo "368162 * 65536 / 1024 / 1024 / 1024" | bc -l
22.47082519531250000000

Gut 22 Giga­byte in Nut­zung (es ist ein Win­dows mit IIS und MS-SQL, da wird geklotzt!), das paßt.

Damit habe ich end­lich alle Wer­te, gerech­net wird dann in Zab­bix.

Ergeb­nis:

0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.