I am currently facing a problem with a threshold definition which I defined to monitor a SNMP-Informant disk.
The threshold logic I configured seems not to trigger for some reason.
* RRD Data collection works. (I checked with JRobin).
* SNMP-Informant on the Windows box works, I get correct data with snmpwalk and MIB-Browser.
* Graphs are working.
* Threshold is enabled in collectd-configuration.xml: <parameter key="thresholding-enabled" value="true"/>
* The threshold mechanism itself works like a charm. Other default definitions like the default for hrstorage work as expected.
The disk I want to check with a "low" threshold logic is the following:
snmpwalk -v2c -c community hostname.domain .22.214.171.124.4.1.9600.1.1.1.126.96.36.199.58
iso.188.8.131.52.1.9600.1.1.1.184.108.40.206.58 = Gauge32: 19
As you can see, snmpwalk gives me the correct answer, the disk is constantly 81% full or 19% free.
A MIB-Browser gives me the following SNMP data and path for this particular disk:
private.enterprises.wtcs.informant.standard.logicalDiskTable.logicalDiskEntry.lDiskPercentFreeSpace.2.76.58 : 19 g
This is the path to the RRD data of this particular disk:
The disk is 2.76.58, the corresponding files are:
The collection works via standard datacollection-config.xml which includes datacollection/microsoft.xml
which includes datacollection/snmpinformant.xml.
Therefore, I have two names that define the data I want to inspect: sinfLDskFreeMbyte (defined in snmpinformant.xml) and lDiskPercentFreeSpace which I find when I use the MIB-Browser. (I'm not an SNMP expert and have to admit that I do not fully understand the mechanism behind this OID and these local and remote alias definitions)
This is the threshold definition which has been autocreated to thresholds.xml after I defined it via Web-GUI.
What I don't understand is that when I use a MIB browser (as in the example output above) to check the SNMP-Informant data
of the server in question, the alias names are different from the aliases defined in datacollection/snmpinformant.xml. I learned in
the one and only "OpenNMS" book that the new threshold mechanism directly checks the datastream that is collected by collectd
- which is defined in collectd-configuration.xml - instead of checking the collected RRD data. I thought that I may have to use
a different alias in the threshold definition instead of the (local) sinfLDskPctFreeSpc and therefore also tried (remote) lDiskPercentFreeSpace, but no luck.
As you can see, I created 2 different versions of the threshold with the 2 different alias names:
<group name="testgroup" rrdRepository="/var/lib/opennms/rrd/snmp/">
<threshold description="testdesc" type="low"
ds-type="sinfLDskInstance" value="25.0" rearm="30.0"
<threshold description="no description" type="low"
ds-type="node" value="25.0" rearm="30.0" trigger="1"
This is the autocreated event which has been written out to events/programmatic.events.xml after I configured the threshold via Web-GUI:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<event-label>User-defined threshold event opennms.org/custom/diskabove80</event-label>
<descr>Threshold exceeded for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]%</descr>
<logmsg dest="logndisplay">Threshold exceeded for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]%</logmsg>
* Do I need to add a "Resource Filter" within the threshold definition?
* Why is there a RRD path in the threshold definition when OpenNMS will directly check the data stream instead of the RRD DB?
* Datasource (Drop-Down in threshold Web-GUI): Must the datasource be "node" or "sinfLDskInstance" (the string "sinfLDskInstance" will be autogenerated from "SNMP Informant Logical Disk" from the dropdown in the threshold GUI. I unsuccessfully tried both.
* And the most important one: Why is my threshold definition not triggering?
Thanks in advance,