Gegeben ist ein Windows Server 2008 R2. Er bietet SNMP an, das mitgelieferte.
Mein Begehr: den verfügbaren Speicher im Zabbix plotten und bei Unterschreiten eines Schwellwertes alarmieren.
Natürlich könnte man das elegant mit einem Zabbix-Agent machen (gibts ja auch für Windows) — aber der Admin ist etwas eigen… Man weiß ja nicht, was da alles passieren kann und so 🙂
Also SNMP, da frage ich ja schon meinen Router ab, muß mir also keine Gedanken 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 allerdings net-snmp, und Windows verwendet das natürlich 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.
Googlen, try-and-error läßt mich schon mal den gesamten verbauten Speicher finden (.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 weiter:
snmpwalk ü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 ersten vier Einträge sind Laufwerke, danach Swap, danach RAM. Das heißt natürlich, daß der Index für RAM abhängig von der Anzahl der Laufwerke ist 🤦🏼♂️- ich habe keine Ahnung, was passiert, wenn man ein Netzlaufwerk mounted.
Also walken 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, Pferdeäpfel? Nun, es ist ja ein Laufwerk, also sind es, trommelwirbel, hrStorageAllocationUnits
. Jetzt muß man nur noch deren Größe herausbekommen. ein snmpget auf .1.3.6.1.2.1.25.2.3.1.4.6 liefert:
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 Gigabyte in Nutzung (es ist ein Windows mit IIS und MS-SQL, da wird geklotzt!), das paßt.
Damit habe ich endlich alle Werte, gerechnet wird dann in Zabbix.
Ergebnis: