For several years I own a APC Netbotz Rack Monitor 450 to keep track of the temperature and humidity of my small 19″ cabinet at my garage. Getting these metrics from this machine is quite straightforward using SNMP GET requests. I personally use Zabbix for monitoring my internal and external environments, and therefore send te metrics into the Zabbix system. But first I need to get the specific metrics from the APC appliance.
Prerequisites
- Linux environment (I personally prefer Ubuntu)
- Installed SNMP utils, we need snmpwalk.
Command structure
We use:
- snmpwalk
- grep
- tail
The command is build up like this:
<snmpwalk ultil> -v <SNMP version> -c <SNMP community on rackmonitor> <ip address> <SNMP object identifier>|<grep only the numbers out of the output string>| <get only the first rule of the output>
I do this by executing specific commands on a Linux command line on a specific SNMP OID, within a specific SNMP community.
In my case the community is “rackmonitor“. By default the default (read-only) SNMPv1/v2c communities of APC Rackmonitor are set to either ‘public’.
OK, let’s get the data from the rackmonitor which is configured on my local network at IP 192.168.1.12:
First let test if the community can be read:
snmpwalk -v 2c -c rackmonitor 192.168.1.12 <enter>
Output would be something like this:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux netbotzC372D3 2.6.12 #307 Wed Oct 21 14:06:44 EDT 2009 ppc"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.5528.100.20.10.2014
iso.3.6.1.2.1.1.3.0 = Timeticks: (611688273) 70 days, 19:08:02.73
iso.3.6.1.2.1.1.4.0 = STRING: "unknown"
iso.3.6.1.2.1.1.5.0 = STRING: "netbotzC372D3"
iso.3.6.1.2.1.1.6.0 = STRING: "unknown"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (6) 0:00:00.06
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB module for SNMPv2 entities"
iso.3.6.1.2.1.1.9.1.3.2 = STRING: "View-based Access Control Model for SNMP."
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The SNMP Management Architecture MIB."
iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB for Message Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.5 = STRING: "The management information definitions for the SNMP User-based Security Model."
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (6) 0:00:00.06
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (6) 0:00:00.06
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (6) 0:00:00.06
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (6) 0:00:00.06
iso.3.6.1.2.1.2.1.0 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "can0"
iso.3.6.1.2.1.2.2.1.2.3 = STRING: "eth0"
iso.3.6.1.2.1.2.2.1.2.4 = STRING: "sit0"
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 24
iso.3.6.1.2.1.2.2.1.3.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.3.3 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.3.4 = INTEGER: 131
iso.3.6.1.2.1.2.2.1.4.1 = INTEGER: 16436
iso.3.6.1.2.1.2.2.1.4.2 = INTEGER: 16
iso.3.6.1.2.1.2.2.1.4.3 = INTEGER: 1500
iso.3.6.1.2.1.2.2.1.4.4 = INTEGER: 1480
iso.3.6.1.2.1.2.2.1.5.1 = Gauge32: 10000000
iso.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.5.3 = Gauge32: 100000000
iso.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.6.1 = ""
iso.3.6.1.2.1.2.2.1.6.2 = ""
iso.3.6.1.2.1.2.2.1.6.3 = Hex-STRING: 00 C0 B7 C3 72 D3
iso.3.6.1.2.1.2.2.1.6.4 = ""
iso.3.6.1.2.1.2.2.1.7.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.3 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.4 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.2 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.3 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.4 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.9.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.9.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.2.2.1.10.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.10.2 = Counter32: 27
iso.3.6.1.2.1.2.2.1.10.3 = Counter32: 2635852909
iso.3.6.1.2.1.2.2.1.10.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.11.2 = Counter32: 2701296
iso.3.6.1.2.1.2.2.1.11.3 = Counter32: 37816182
iso.3.6.1.2.1.2.2.1.11.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.12.3 = Counter32: 52856404
iso.3.6.1.2.1.2.2.1.12.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.13.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.14.3 = Counter32: 11287
iso.3.6.1.2.1.2.2.1.14.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.15.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.16.2 = Counter32: 37454
iso.3.6.1.2.1.2.2.1.16.3 = Counter32: 265535983
iso.3.6.1.2.1.2.2.1.16.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.17.2 = Counter32: 813808
iso.3.6.1.2.1.2.2.1.17.3 = Counter32: 2982229
iso.3.6.1.2.1.2.2.1.17.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.18.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.19.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.1 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.2 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.3 = Counter32: 0
iso.3.6.1.2.1.2.2.1.20.4 = Counter32: 0
iso.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.21.3 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.21.4 = Gauge32: 0
iso.3.6.1.2.1.2.2.1.22.1 = OID: ccitt.0
iso.3.6.1.2.1.2.2.1.22.2 = OID: ccitt.0
iso.3.6.1.2.1.2.2.1.22.3 = OID: ccitt.0
iso.3.6.1.2.1.2.2.1.22.4 = OID: ccitt.0
iso.3.6.1.2.1.11.1.0 = Counter32: 1332404
iso.3.6.1.2.1.11.2.0 = Counter32: 1332404
iso.3.6.1.2.1.11.3.0 = Counter32: 0
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.8.0 = Counter32: 0
iso.3.6.1.2.1.11.9.0 = Counter32: 0
iso.3.6.1.2.1.11.10.0 = Counter32: 0
iso.3.6.1.2.1.11.11.0 = Counter32: 0
iso.3.6.1.2.1.11.12.0 = Counter32: 0
iso.3.6.1.2.1.11.13.0 = Counter32: 1332414
iso.3.6.1.2.1.11.14.0 = Counter32: 0
iso.3.6.1.2.1.11.15.0 = Counter32: 0
iso.3.6.1.2.1.11.16.0 = Counter32: 1200344
iso.3.6.1.2.1.11.17.0 = Counter32: 0
iso.3.6.1.2.1.11.18.0 = Counter32: 0
iso.3.6.1.2.1.11.19.0 = Counter32: 0
iso.3.6.1.2.1.11.20.0 = Counter32: 0
iso.3.6.1.2.1.11.21.0 = Counter32: 0
iso.3.6.1.2.1.11.22.0 = Counter32: 0
iso.3.6.1.2.1.11.24.0 = Counter32: 0
iso.3.6.1.2.1.11.25.0 = Counter32: 0
iso.3.6.1.2.1.11.26.0 = Counter32: 0
iso.3.6.1.2.1.11.27.0 = Counter32: 0
iso.3.6.1.2.1.11.28.0 = Counter32: 1332428
iso.3.6.1.2.1.11.29.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.31.1.1.1.1.1 = STRING: "lo"
iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "can0"
iso.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth0"
iso.3.6.1.2.1.31.1.1.1.1.4 = STRING: "sit0"
iso.3.6.1.2.1.31.1.1.1.2.1 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.2.2 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.2.3 = Counter32: 52856404
iso.3.6.1.2.1.31.1.1.1.2.4 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.3.1 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.3.2 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.3.3 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.3.4 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.4.1 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.4.2 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.4.3 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.4.4 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.5.1 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.5.2 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.5.3 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.5.4 = Counter32: 0
iso.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 27
iso.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 15520754797
iso.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.7.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.7.2 = Counter64: 2701296
iso.3.6.1.2.1.31.1.1.1.7.3 = Counter64: 37816182
iso.3.6.1.2.1.31.1.1.1.7.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.8.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.8.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.8.3 = Counter64: 52856404
iso.3.6.1.2.1.31.1.1.1.8.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.9.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.9.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.9.3 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.9.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 37454
iso.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 265535983
iso.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.11.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.11.2 = Counter64: 813808
iso.3.6.1.2.1.31.1.1.1.11.3 = Counter64: 2982229
iso.3.6.1.2.1.31.1.1.1.11.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.12.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.12.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.12.3 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.12.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.13.1 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.13.2 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.13.3 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.13.4 = Counter64: 0
iso.3.6.1.2.1.31.1.1.1.15.1 = Gauge32: 10
iso.3.6.1.2.1.31.1.1.1.15.2 = Gauge32: 0
iso.3.6.1.2.1.31.1.1.1.15.3 = Gauge32: 100
iso.3.6.1.2.1.31.1.1.1.15.4 = Gauge32: 0
iso.3.6.1.2.1.31.1.1.1.16.1 = INTEGER: 2
iso.3.6.1.2.1.31.1.1.1.16.2 = INTEGER: 2
iso.3.6.1.2.1.31.1.1.1.16.3 = INTEGER: 2
iso.3.6.1.2.1.31.1.1.1.16.4 = INTEGER: 2
iso.3.6.1.2.1.31.1.1.1.17.2 = INTEGER: 1
iso.3.6.1.2.1.31.1.1.1.17.3 = INTEGER: 1
iso.3.6.1.2.1.31.1.1.1.17.4 = INTEGER: 1
iso.3.6.1.2.1.31.1.1.1.18.1 = ""
iso.3.6.1.2.1.31.1.1.1.18.2 = ""
iso.3.6.1.2.1.31.1.1.1.18.3 = ""
iso.3.6.1.2.1.31.1.1.1.18.4 = ""
iso.3.6.1.2.1.31.1.1.1.19.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.31.1.1.1.19.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.31.1.1.1.19.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.31.1.1.1.19.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.31.1.5.0 = Timeticks: (0) 0:00:00.00
If you get something like above (you clearly see several OID’s (object identifiers) , your readout was successful.
Now we need to get specific variables which show the data we need:
We now add a specific OID to get the specific value for temperature:
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.1.1.2
The output will be something like:
iso.3.6.1.4.1.5528.100.4.1.1.1.2.2628357572 = INTEGER: 158
Now get the specific value from the output string of temperature using grep:
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.1.1.2|grep -o '[0-9.]\+'
The output will be something like:
.3.6.1.4.1.5528.100.4.1.1.1.2.2628357572
159
Now use tail to get the te last rule only:
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.1.1.2|grep -o '[0-9.]\+'| tail -1
The output will be something like:
158
The above value is the temperature, but to get in a float value you need to divide it by 10. I do this ad my monitoring endpoint, but if you want to do this at console level you can do this as well.
Now all three examples listed together:
Temperature
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.1.1.2|grep -o '[0-9.]\+'| tail -1
Humidity
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.2.1.2|grep -o '[0-9.]\+'| tail -1
Dewpoint
snmpwalk -v 2c -c rackmonitor 192.168.1.12 .1.3.6.1.4.1.5528.100.4.1.3.1.2|grep -o '[0-9.]\+'| tail -1

