Skip navigation
Currently Being Moderated

Windows SNMP Performance Monitor (Advanced)

VERSION 31  Click to view document history
Created on: Sep 14, 2009 1:30 PM by Ryan Matte - Last Modified:  Oct 17, 2012 12:46 PM by Ryan Matte

Development of this ZenPack is sponsored by: Nova Networks


Submitted by:

Ryan Matte, Kevin Brebanov

*** NOTICE ***
If you are upgrading from an older version of the pack I recommend removing it and then reinstalling it as I've made significant changes to the template which don't appear to merge well when upgrading.  In the case of this Advanced ZenPack, move all of your Windows devices out of the processor organizers to /Server/Windows so that they don't get deleted when the pack is removed.  After removing and reinstalling the pack simply move the devices back in to their respective organizers.

This ZenPack allows you to monitor performance data (CPU and Memory) of Windows hosts running the standard SNMP Service without needing snmp-informant installed. This ZenPack is still under development but is functional.


This ZenPack adds organizers to /Server/Windows as follows:

/Server/Windows/1 Processor
/Server/Windows/2 Processors
/Server/Windows/4 Processors
/Server/Windows/8 Processors
/Server/Windows/16 Processors

Each one has a template that monitors a certain number of processors. New templates may be created if you need more than 16 processors, though the defaults should be ideal in most cases.


To determine which group to place a server in perform an snmpwalk command for hrProcessorLoad as follows:
snmpwalk -v1 -c <snmp string> <host> hrProcessorLoad

The number of lines corresponds to the number of CPUs. Place the device in the appropriate group. This ZenPack allows each individual CPU/Core to be monitored as well as the total CPU usage. It also calculates total memory usage in percentage to make thresholding much easier. There are thresholds available for each individual CPU/Core as well, but these can be disabled if desired.
After installing the ZenPack:


Navigate to /Events/Perf/Memory and select More -> Transform from the menu.  Insert the following transform and save:


import re
if'threshold of Memory', evt.summary):
    dev = dmd.Devices.findDevice(evt.ipAddress)
    if dev.getRRDValue('MemoryUsed') and dev.getRRDValue('MemoryTotal'):
        percentUsed = round(dev.getRRDValue('MemoryUsed') * 100 / dev.getRRDValue('MemoryTotal'))
        if'threshold of Memory exceeded', evt.summary):
            status = 'exceeded'
        if'threshold of Memory restored', evt.summary):
            status = 'restored'
        evt.summary = "threshold of Memory %s: current value %3.1f" % (status,percentUsed)
        evt.message = "threshold of Memory %s: current value %3.1f" % (status,percentUsed)

import re
if'threshold of Paging', evt.summary):
    dev = dmd.Devices.findDevice(evt.ipAddress)
    if dev.getRRDValue('PagingUsed') and dev.getRRDValue('PagingTotal'):
        percentUsed = round(dev.getRRDValue('PagingUsed') * 100 / dev.getRRDValue('PagingTotal'))
        if'threshold of Paging exceeded', evt.summary):
            status = 'exceeded'
        if'threshold of Paging restored', evt.summary):
            status = 'restored'
        evt.summary = "threshold of Paging %s: current value %3.1f" % (status,percentUsed)
        evt.message = "threshold of Paging %s: current value %3.1f" % (status,percentUsed)






     Zenoss Version: 2.3 (py2.4 file), 3.0 (py2.6 file), 4.2 (py2.7 file)

     ZenPack Dependencies:

     External Dependencies: snmpwalk needs to be installed for this pack to work




Tagged Releases:

Change History:


Trac tickets:

Known issues:

Note: binary attachments ending in .zip will need to be unzipped before use.
Comments (61)