This ZenPack is to manage Nimble storage arrays using the SNMP protocol. A new nimble device type is created with a new component type to represent volumes.
The ZenPack provides a modeler plugin to discover all volumes for a Nimble device.
It also provides device classes of /Storage and /Storage/Nimble.
A performance template is provided to gather and graph the scalar data listed above. The ZenPack binds this template to the /Storage/Nimble device class.
A component performance template is provided to gather data for volume usage and graph that data. Note that component templates must not be manually bound - they bind automatically to the object type that exactly matches the name of the template.
The two Nimble MIBs are included in the ZenPack.
A new event is raised on volume performance thresholds. This event includes a transform to improve the summary field of the event.
Because this ZenPack needs to perform functions on SNMP values in performance templates, the Zenoss Calculated Performance ZenPack is a prerequisite, which itself has a prerequisite of the Python Collector ZenPack.
A new device object class - NimbleDevice - with a relationship of nimbleVolume (note capitalisation) A new component object class for a NimbleDevice - NimbleVolume - with a relationship nimbleDevice
A modeler plugin - NimbleVolumeMap - which gathers id, name, various sizes, online status and number of connections. The three sets of size data are in 2 MIB values - high 32 bits and low 32 bits. The modeler combines these values to present a single value in the NimbleVolume object. We believe that the raw SNMP data is in MB. The modeler divides this by 1024 to present values as GB.
The NimbleVolumeMap plugin is assigned to the /Storage/Nimble device class by the ZenPack.
Device-level template - NimbleGlobalStats - is available for device classes from /Storage/Nimble. It is bound to this device class in the ZenPack. It gathers and graphs ioreads/writes, ioSeqReads/Writes and ioNonSeqReadHits.
Component template NimbleVolume (note the name exactly matches the new object class), is available for device classes from /Storage/Nimble. It must not be manually bound. It gathers volUsageHigh and volUsageLow SNMP tables. To convert these values into a single datapoint, the Zenoss Calculated Performance ZenPack is used to create a new datapoint of volUsage. These values are all in MB.
Two thresholds are supplied for "30 percent used" and "90 percent used". They access the object's value for VolSize (ie the maximum size of the volume) and then threshold the VolUsage datapoint at the respective percentages. The threshold value is multiplied by 1024 (as the VolSize object data delivered by the modeler is given in GB). They generate a /Perf/Nimble event if the threshold is breached.
Graphs are delivered of volUsageLow and volUsage. Note that the volUsage datapoint in the VolUsage graph has been modified with an RPN (Reverse Polish Notation) formula of 1024,*,1024,* . This does not affect the value stored in the rrd datafile but does ensure that graph actually shows bytes, rather than MB. The autoscaling of the rrdgraph utility then automatically applies appropriate M / G / T on the labels.
This ZenPack introduces no new zProperties but it does set the zPythonClass property to ZenPacks.community.Nimble.NimbleDevice for the device class /Storage/Nimble.
Two MIBs are supplied with this ZenPack:
The performance template has a threshold which generates an event of class /Perf/Nimble. The event has a transform which improves the output of the summary field. The event is included in the ZenPack.
Zenoss is built for modern IT infrastructures. Let's discuss how we can work together.