When limited to editing within the Authoring pane of the Operations Console in OpsMgr, SNMP monitoring options are relatively limited – only SNMP GET requests are supported and data cannot be manipulated before calculating health state. However, with some pretty heavy authoring, very complex SNMP monitoring becomes completely viable, particularly in R2. In the next several posts, I will be describing some methods to perform advanced SNMP discovery and monitoring in OpsMgr 2007, such as discovering hosting relationships for entities like network interfaces, as well as passing Snmp data to script probes in order to perform state change monitoring and mathematical operations. When all is said and done, I will post my management packs for SNMP monitoring of Cisco, Checkpoint, and Net-SNMP devices. In this post, I will describe the methods I used for custom discovery of Cisco SNMP devices and their hosted entities (interfaces, power supplies, etc).
Cisco SNMP Management Pack: Designing the Classes and Groups
In order to facilitate monitoring of the device (e.g. CPU, Memory, up/down status), individual interfaces (e.g. status, utilization, resets), and Cisco EnvMon objects (e.g. Power Supplies, Temperature, etc), each of these entities are best represented as a unique class with hosting relationships. For the objects stored in tables, there are two feasible options for discovery. In SCOM 2007 R2, the ‘walkreturnmultipleitems’ attribute of the System.SnmpProbe probe action can be set in order to walk an SNMP table and return each snmpdata item individually. In SCOM 2007 SP1, this option is not available, requiring the use of a script discovery with an external snmp probe (such as WMI) in order to retrieve the discovery items. In this post, I will describe the R2 method, and I will address the script option using the WMI SNMP provider in a later post. In either case, the class design will be similar.
For monitoring of Cisco SNMP devices, I created five classes:
- CiscoSNMP.Class.CiscoDevice
- CiscoSNMP.Class.CiscoDevice.Interface
- CiscoSNMP.Class.CiscoDevice.PowerSupply
- CiscoSNMP.Class.CiscoDevice.Fan
- CiscoSNMP.Class.CiscoDevice.TemperatureSensor
For the four hardware entities, I created a hosting relationship so that they are hosted by the CiscoDevice class. The classes, properties, and relationships are represented on this diagram.

Read more of this post