I'm developing a new Hyperic plugin to monitor the hardware of our servers. They are mostly Dell servers. I want to use SNMP to read things like power supply and disk status from the Dell OpenManage software. We are already running HQ agents on these platforms and I want to add the hardware monitoring as a server resource and have power supplies, disks etc. each to be displayed as seperate services within the server resource.
SNMP is all configured and working properly. I can read all the values I need from the command line using snmp(walk|get|getnext|table|bulkget). The plugin is still very basic and only tries to enumerate all the available power supplies (which show up as services) and read the status, output and type for the individual power supplies.I have attached the current version of the plugin to this post.
However, the plugin currently only works partly and I am completely stuck because the agent keeps giving me this error:
> Invalid configuration: Error contacting resource: Unable to connect to SNMP Agent (127.0.0.1:161 v2c,public)
Searching the forums has turned up some posts describing the same problem, but the proposed solutions do not work for me:
http://communities.vmware.com/thread/348850?tstart=330
http://communities.vmware.com/message/1918450#1918450
Here's what happens:
- plugin is deployed to HQ agent and HQ server
- the "Dell Hardware" server is manually added to a platform
- using the default configuration options, the power supplies are succesfully auto-discovered by the HQ agent and each show up in HQ
- HQ starts complaining about not being able to connect to the SNMP agent when browsing to the individual power supply service resources
The strange thing is that it is simply not true that the HQ agent can't connect to the SNMP agent, as I can see the SNMP queries taking place (using tcpdump):
root@platform:~# tcpdump -vvv -T snmp -s 2048 -ni any port 161
12:47:42.137805 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613512 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.2 } }
12:47:42.139539 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 305) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(258) R=1432613512 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.1=1 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.2=2 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.1=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.2=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.3=0 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.1=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.2=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.3=242 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 } }
12:47:47.433957 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613514 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.5 } }
12:47:47.435553 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 335) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(288) R=1432613514 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.2=3 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.6.1.1=7000 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.1=9 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.2=11 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.3=11 .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.1="PS 1 Status " .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.2="PROC_1 VRM " .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.3="PROC_2 VRM " } }
12:47:47.436757 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613516 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.2 } }
12:47:47.438017 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 305) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(258) R=1432613516 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.1=1 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.2=2 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.1=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.2=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.3=0 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.1=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.2=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.3=242 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 } }
It is also very strange that the HQ agent is able to enumerate the available power supplies through auto-discovery at first (which would require a working SNMP connection), but after that can not read the related power supply status OIDs. I've tried different combinations of snmpIp's and snmpVersions, to no avail :-(
Anyone have any ideas?
Leander
SNMP is all configured and working properly. I can read all the values I need from the command line using snmp(walk|get|getnext|table|bulkget). The plugin is still very basic and only tries to enumerate all the available power supplies (which show up as services) and read the status, output and type for the individual power supplies.I have attached the current version of the plugin to this post.
However, the plugin currently only works partly and I am completely stuck because the agent keeps giving me this error:
> Invalid configuration: Error contacting resource: Unable to connect to SNMP Agent (127.0.0.1:161 v2c,public)
Searching the forums has turned up some posts describing the same problem, but the proposed solutions do not work for me:
http://communities.vmware.com/thread/348850?tstart=330
http://communities.vmware.com/message/1918450#1918450
Here's what happens:
- plugin is deployed to HQ agent and HQ server
- the "Dell Hardware" server is manually added to a platform
- using the default configuration options, the power supplies are succesfully auto-discovered by the HQ agent and each show up in HQ
- HQ starts complaining about not being able to connect to the SNMP agent when browsing to the individual power supply service resources
The strange thing is that it is simply not true that the HQ agent can't connect to the SNMP agent, as I can see the SNMP queries taking place (using tcpdump):
root@platform:~# tcpdump -vvv -T snmp -s 2048 -ni any port 161
12:47:42.137805 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613512 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.2 } }
12:47:42.139539 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 305) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(258) R=1432613512 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.1=1 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.2=2 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.1=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.2=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.3=0 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.1=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.2=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.3=242 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 } }
12:47:47.433957 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613514 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.5 } }
12:47:47.435553 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 335) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(288) R=1432613514 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.2=3 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.6.1.1=7000 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.1=9 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.2=11 .1.3.6.1.4.1.674.10892.1.600.12.1.7.1.3=11 .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.1="PS 1 Status " .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.2="PROC_1 VRM " .1.3.6.1.4.1.674.10892.1.600.12.1.8.1.3="PROC_2 VRM " } }
12:47:47.436757 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 78) 127.0.0.1.32824 > 127.0.0.1.161: { SNMPv2c { GetBulk(35) R=1432613516 N=0 M=10 .1.3.6.1.4.1.674.10892.1.600.12.1.2 } }
12:47:47.438017 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], length: 305) 127.0.0.1.161 > 127.0.0.1.32824: { SNMPv2c { GetResponse(258) R=1432613516 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.1=1 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.2=2 .1.3.6.1.4.1.674.10892.1.600.12.1.2.1.3=3 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.1=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.2=0 .1.3.6.1.4.1.674.10892.1.600.12.1.3.1.3=0 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.1=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.2=242 .1.3.6.1.4.1.674.10892.1.600.12.1.4.1.3=242 .1.3.6.1.4.1.674.10892.1.600.12.1.5.1.1=3 } }
It is also very strange that the HQ agent is able to enumerate the available power supplies through auto-discovery at first (which would require a working SNMP connection), but after that can not read the related power supply status OIDs. I've tried different combinations of snmpIp's and snmpVersions, to no avail :-(
Anyone have any ideas?
Leander