My wishlist for an SNMP client
by Chris Josephes
I'm used to dealing with SNMP. I've worked with three or four monitoring and graphing applications in the past, all of them being open source. I've mapped IP addresses to interface indexes, and back again. I've created RRD files from the command line, and I learned to transmit my own custom SNMP traps to management servers.
I can recognise a lot of OIDs by sight nowadays. I recognize them, because I am usually forced to type them into those open source network managing applications. Sometimes it works, sometimes it doesn't.
Almost every open source graphing program out there knows how to do ifInOctets and ifOutOctets. MRTG set the standard on that one. With the availability of RRDTool, we have a flooded market of tools that graph all sorts of network statistics just like MRTG did.
But what I don't see are tools that can handle more complex SNMP polling situations. When the open source programs fail, I find myself being forced to write my own polling program (usually in Perl) that runs independently from the main polling program.
I wrote a program to monitor an SNMP device, because OpenNMS couldn't deal with a broken SNMP agent implementation. I wrote a program to monitor a Network Appliance, because MRTG couldn't easily re-create the "Operations Per Second" statistic. The list goes on and on.
What I need is one single polling program that can accomplish all of these tasks.
- Properly merge high and low 32 bit counters.
- Read a MIB file.
- Perform mathematical operations on retrived values before saving.
- Successfully navigate a SNMP table index (an index that uses a string of sub-identifiers).
If there's one program out there that can easily do all this, I haven't found it yet. But then again, there are so many programs out there, I may have missed one.
Give me your feedback. Find me the program that does the job.
Did you try iReasoning MIB Browser? It's java and it's free; should work on any machine.
For the next release of OpenNMS (1.3), the SNMP processes have been rewritten making your wishlist, now, at least possible. New abstractions were built using the Composite structural design pattern that the developer calls: trackers and and walkers. The trackers do the accounting of OIDs requested and badly behaving agents and the walkers optimize the gathering of SNMP data. The walkers can easily be extended and given more intelligence for the more difficult SNMP operations such as determining the instances to collect.
How do you translate a SNMP Trap to a meaning full Message