SNMP Discovery Provider for OpsMgr 2007

Operations Manager ships with various providers that allow populating classes. They allow discovering classes based on the presence of a Windows Service, WMI queries, registry entries or by running a script. Currently it is not possible to use SNMP OID queries.

In oder to discover details of SNMP capable network devices, I combined the ProbeAction System.SnmpProbe with a discovery data mapper. The resulting Custom.SnmpQuery.FilteredOIDDiscoveryProvider uses the output of SNMP OID queries in discoveries. To make reusing the provider easier, I put it into a sealed management pack.

Download Custom SNMP Extensions MP Guide (includes an example)

Download Custom SNMP Extensions MP (sealed) (rename after downloading – it is a zip file)

Important notes
  • This library will only work with OpsMgr SP1 or later.
  • Public key token: e5c80663d573f08c
<Reference Alias="CustomSNMP">
  • Make sure you have your custom objects hosted by a Microsoft.SystemCenter.NetworkDevice class object. You will then be able to resuse its properties (IP address, SNMP community).
  • You must allow the management server or gateway you use as SNMP proxy, to act as discovery proxy. 
  • It is not possible to use the authoring templates of OpsMgr’s console to add rules or monitors to your discovered classes. Target them at ‘SNMP Network Device’ instead, export the mp and copy the bits to your own xml management pack. Do not forget to alter the target references (add /Host/ references where required).

 In the next weeks I am going to publish an entire management pack making use of the SNMP Extensions Library. The above picture shows HP ProLiant hardware objects hosted by a SNMP network device (a VMware ESX 3.5 server).

Update (May 29)

Scott has published a detailed walkthrough on how the provider can be used.  His post comes with an example management pack for an Ecosaire AC unit.

My own example (HP ProLiant) is here: HP ProLiant SNMP only MP


8 thoughts on “SNMP Discovery Provider for OpsMgr 2007

  1. This seems to be pretty cool, definitely makes discovering of different types of devices pretty simple. Thanks for posting it!

    Can this be used to do interface discovery as well? (Looking at it, I think not, but figure I can ask!). Doing interface (and similar) discovery is pretty much the one thing that I still can’t do with SCOM, and *really* want to be able to. Have any plans on that front?

  2. … and while I have you here … 🙂

    Interesting info in your docs, on being able to use the OID=xxx bit in your varbinds, that seems to make things a lot easier to work with, and I’d never seen it before. Is that documented somewhere? I’ve yet to find any useful docs on that front.

    I also don’t understand the origin of the /DataItem/ErrorCode bit… I’m assuming that’s a return value from the snmp query itself, but there’s that lack of documentation thing again. And pretty much the same deal on the /Syntax attribute. Any help or pointers there?


  3. Glad you like the discovery provider. I am trying to get something together that will allow to discover interfaces (or other OIDs that need walking) as well. However; it seems as if it will not be quite as simple as the single instance discovery provider.

    Unfortunately I do not have much documentation either. I had to try things in order to understand what I needed. However; if you have a look at MS’ System.SNMP.Library, you’ll see that they’re using /ErrorCode as well.

    As I understand it:
    – /ErrorCode: Return Value of the SNMP query itself
    1: OK

    – /Syntax: Defines the object-type of the value
    2: Integer
    4: Octets
    6: Oid
    64: Ip Address
    65: Counter 32
    66: Gauge 32
    128: No Such Object
    129: No Such Instance

    And the [OID=’xxxxx’] are XPath query statements. The trick is to know what XML data your OID query returns. I normally configure a temporary SNMP OID event collection rule. This will allow you to have a look at it (click on ‘View Event Data’ when looking at an event). Lastely an XPath test tool can be quite handy.

  4. Haven’t tested it yet, but this seems very useful.

    Have you considered releasing your management packs in unsealed format? I’m worried that I would build an number of SNMP management packs based on your sealed discovery only to have a future SCOM service pack or something else break it.

    Perhaps you would consider releasing it under the GPL license? (

  5. Thanks for reminding me that I could just export the MP to see inside it. As you mentioned, the MP needs to be sealed in order to be referenced from another management pack so releasing it in that format makes perfect sense.

    I just wanted to drop a line to say that I finished setting up my first SNMP management pack using your discovery. It works perfectly. If anyone is interested, I’ve written my own explanation of how the discovery works and provided my MP on my blog: Example SNMP Management Pack for SCOM 2007

    Thanks so much for sharing your work!

  6. Pingback: Monitoring Network Switches and Interfaces - Idan at

  7. This module is very useful to discover the snmp scalar object. However it is not able to discovery the table object.

    • Operations Manager 2007 R2 now supports the option to return multiple items when using the Walk flag of the System.SnmpProbe. For a discovery this would work as long as only the key property is discovered – which would normally be the index in case of a walk.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s