threshold filters not processed properly

Description

Hello,

I've detected that the resource-filter criterios used in thresholds.txt are not taken by expressions, they seems to take the one on the first expression and apply to all of them.

this is my config:

<group name="hrstorage-windows-restrict"
rrdRepository = "/opt/opennms/share/rrd/snmp/">
<!-- Physical Memory -->
<expression type="high" ds-type="hrStorageIndex" value="10.0"
rearm="9.0" trigger="2" ds-label="hrStorageDescr"
filterOperator="and" expression="(hrStorageUsed / hrStorageSize) * 100.0">
<resource-filter field="hrStorageType">^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$</resource-filter>
<resource-filter field="hrStorageDescr">^(?:Physical\sMemory)$</resource-filter>
</expression>
<expression type="high" ds-type="hrStorageIndex" value="75.0"
rearm="75.0" trigger="2" ds-label="hrStorageDescr"
filterOperator="and" expression="(hrStorageUsed / hrStorageSize) * 100.0">
<resource-filter field="hrStorageType">^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$</resource-filter>
<resource-filter field="hrStorageDescr">^(?:Physical\sMemory)$</resource-filter>
</expression>
<!--Virtual Memory-->
<expression type="high" ds-type="hrStorageIndex" value="10.0"
rearm="9.0" trigger="2" ds-label="hrStorageDescr"
filterOperator="and" expression="(hrStorageUsed / hrStorageSize) * 100.0">
<resource-filter field="hrStorageType">^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.3$</resource-filter>
<resource-filter field="hrStorageDescr">^(?:Virtual\sMemory)$</resource-filter>
</expression>
<expression type="high" ds-type="hrStorageIndex" value="50.0"
rearm="50.0" trigger="2" ds-label="hrStorageDescr"
filterOperator="and" expression="(hrStorageUsed / hrStorageSize) * 100.0">
<resource-filter field="hrStorageType">^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.3$</resource-filter>
<resource-filter field="hrStorageDescr">^(?:Virtual\sMemory)$</resource-filter>
</expression>
</group>

this is my debug log:

2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: applying 2 filters to resource node[421].hrStorageIndex[6]
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #1: field=hrStorageType, regex='^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$'
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageType
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageType is .1.3.6.1.2.1.25.2.1.2. Pass filter? true
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #2: field=hrStorageDescr, regex='^(?:Virtual\sMemory)$'
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageDescr
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageDescr is Physical Memory. Pass filter? false
2013-05-17 07:59:06,981 INFO [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: applyThresholds: Not processing threshold (hrStorageUsed / hrStorageSize) * 100.0 : {evaluator=high, dsName=(hrStorageUsed / hrStorageSize) * 100.0, dsType=hrStorageIndex, evaluators=[{ds=(hrStorageUsed / hrStorageSize) * 100.0, value=10.0, rearm=9.0, trigger=1}]} because no filters matched
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: applying 2 filters to resource node[421].hrStorageIndex[6]
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #1: field=hrStorageType, regex='^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$'
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageType
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageType is .1.3.6.1.2.1.25.2.1.2. Pass filter? true
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #2: field=hrStorageDescr, regex='^(?:Virtual\sMemory)$'
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageDescr
2013-05-17 07:59:06,981 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageDescr is Physical Memory. Pass filter? false
2013-05-17 07:59:06,982 INFO [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: applyThresholds: Not processing threshold (hrStorageUsed / hrStorageSize) * 100.0 : {evaluator=high, dsName=(hrStorageUsed / hrStorageSize) * 100.0, dsType=hrStorageIndex, evaluators=[{ds=(hrStorageUsed / hrStorageSize) * 100.0, value=10.0, rearm=9.0, trigger=1}]} because no filters matched
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: applying 2 filters to resource node[421].hrStorageIndex[6]
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #1: field=hrStorageType, regex='^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$'
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageType
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageType is .1.3.6.1.2.1.25.2.1.2. Pass filter? true
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #2: field=hrStorageDescr, regex='^(?:Virtual\sMemory)$'
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageDescr
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageDescr is Physical Memory. Pass filter? false
2013-05-17 07:59:06,982 INFO [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: applyThresholds: Not processing threshold (hrStorageUsed / hrStorageSize) * 100.0 : {evaluator=high, dsName=(hrStorageUsed / hrStorageSize) * 100.0, dsType=hrStorageIndex, evaluators=[{ds=(hrStorageUsed / hrStorageSize) * 100.0, value=10.0, rearm=9.0, trigger=1}]} because no filters matched
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: applying 2 filters to resource node[421].hrStorageIndex[6]
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #1: field=hrStorageType, regex='^\.1\.3\.6\.1\.2\.1\.25\.2\.1\.2$'
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageType
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageType is .1.3.6.1.2.1.25.2.1.2. Pass filter? true
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: filter #2: field=hrStorageDescr, regex='^(?:Virtual\sMemory)$'
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] CollectionResourceWrapper: getLabelValue: Getting Value for hrStorageIndex::hrStorageDescr
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] GenericIndexResource: getResourceDir: /opt/opennms/share/rrd/snmp/421/hrStorageIndex/PhysicalMemory
2013-05-17 07:59:06,982 DEBUG [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: passedThresholdFilters: the value of hrStorageDescr is Physical Memory. Pass filter? false
2013-05-17 07:59:06,982 INFO [CollectdScheduler-50 Pool-fiber3] ThresholdingSet: applyThresholds: Not processing threshold (hrStorageUsed / hrStorageSize) * 100.0 : {evaluator=high, dsName=(hrStorageUsed / hrStorageSize) * 100.0, dsType=hrStorageIndex, evaluators=[{ds=(hrStorageUsed / hrStorageSize) * 100.0, value=10.0, rearm=9.0, trigger=1}]} because no filters matched

and I end up with 6-7 different events generated regarding Virtual Memory, none for Physical memory.

Please advise

Acceptance / Success Criteria

None

Attachments

4
  • 23 Aug 2013, 01:59 PM
  • 20 Aug 2013, 08:20 AM
  • 19 Aug 2013, 04:45 PM
  • 19 Aug 2013, 04:45 PM

Lucidchart Diagrams

Activity

Alejandro Galue August 23, 2013 at 5:24 PM

Thanks a lot Aaron!

Fixed on revision 8278964501c1bd8e9a1486fe66bf44974c33294b for 1.10 and merged back into 1.12 on revision d00636ef36f4d8f2b42a8b0a3c7a309ec57c6c28

Aaron Scamehorn August 23, 2013 at 5:07 PM

Looks like you got it, Alejandro. I triggered some thresholds, reloaded thresholds. All looks good. Thanks for your help.

Alejandro Galue August 23, 2013 at 1:59 PM

Aaron,

I'm attaching the fixed JAR (opennms-services-1.11.90.jar).

Please make a backup of your current JAR (just in case), then replace it with the version attached, and restart OpenNMS.

The file must be placed on /opt/opennms/lib.

Aaron Scamehorn August 23, 2013 at 1:33 PM

That's more good news, Alejandro! I'll give it a try on our test machine; 1.11.90.

Alejandro Galue August 23, 2013 at 12:28 PM

Aaron,

I believe I've found the problem in the code. I made a bunch of tests with your configuration and everything appear to be working fine on my testing environment.

Before commit the changes, I'm wondering if you can give it a try to be sure that everything is OK. I can generate a JAR with the fix either for 1.0.8 or 1.11.90. Let me know which you want to try.

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

PagerDuty

Created May 17, 2013 at 8:18 AM
Updated January 27, 2017 at 4:21 PM
Resolved August 23, 2013 at 5:24 PM

Flag notifications