From OpenNMS
Contents |
Process Monitoring
Requirements: - OpenNMS 1.6 (Tested on 1.6, may work on previous) - SNMPD Installed On Client
BEFORE CONTINUING: Type the following command to back up the ETC directory.
# cd /opt/opennms && tar czvf etc.`date +%F`.tar.gz etc
Step 1: datacollection-config.xml
When a system has proc defined within the snmpd.conf file, this will pull data collection on said file.
- Within <snmp-collection... tag:
<resourceType name="procIndex" label="Process Table Index (UCD-SNMP MIB)"
resourceLabel="${prNames} (index ${index})">
<persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
<storageStrategy class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
</resourceType>
- Within <groups> tag:
<group name="net-snmp-proc" ifType="all">
<mibObj oid=".1.3.6.1.4.1.2021.2.1.1" instance="procIndex" alias="prIndex" type="integer" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.2" instance="procIndex" alias="prNames" type="string" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.3" instance="procIndex" alias="prMin" type="gauge" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.4" instance="procIndex" alias="prMax" type="gauge" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.5" instance="procIndex" alias="prCount" type="gauge" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.100" instance="procIndex" alias="prErrorFlag" type="integer" />
<mibObj oid=".1.3.6.1.4.1.2021.2.1.101" instance="procIndex" alias="prErrMessage" type="string" />
</group>
- Within <systemDef name="Net-SNMP (UCD)"> and <systemDef name="Net-SNMP">...
<includeGroup>net-snmp-proc</includeGroup>
Step 2: thresholds.xml
Edit the /opt/opennms/etc/thresholds.xml file and add the following to the <group name="netsnmp"...
<threshold type="low" ds-type="procIndex" value="0"
rearm="1.0" trigger="2" ds-label="prNames"
triggeredUEI="uei.opennms.org/COMPANY/proc-down"
rearmedUEI="uei.opennms.org/COMPANY/proc-down-rearmed" ds-name="prCount"/>
<threshold type="high" ds-type="procIndex" value="1.0"
rearm="0.0" trigger="2" ds-label="prNames"
triggeredUEI="uei.opennms.org/COMPANY/proc-error"
rearmedUEI="uei.opennms.org/COMPANY/proc-error-rearmed" ds-name="prErrorFlag"/>
Step 3: eventconf.xml
Once this is completed, you will need to edit the events file (/opt/opennms/etc/eventconf.xml) to create the event custom UEI event. Append this to the end before the </event> tag.
<event-file xmlns="">events/programmatic.events.xml</event-file>
Step 4: events/programmatic.events.xml
Now, edit /opt/opennms/etc/events/programmatic.events.xml and add the following.
<?xml version="1.0" encoding="UTF-8"?>
<events xmlns="http://xmlns.opennms.org/xsd/eventconf">
<event>
<uei xmlns="">uei.opennms.org/COMPANY/proc-down</uei>
<event-label xmlns="">Process Down</event-label>
<descr xmlns="">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>
<severity xmlns="">Minor</severity>
<alarm-data reduction-key="%uei%!%nodeid%!%parm[label]%" alarm-type="1" auto-clean="false" />
</event>
<event>
<uei xmlns="">uei.opennms.org/COMPANY/proc-down-rearmed</uei>
<event-label xmlns="">Process Down - Re-Armed</event-label>
<descr xmlns="">Threshold rearmed for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]</descr>
<logmsg dest="logndisplay">Threshold rearmed for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]%</logmsg>
<severity xmlns="">Normal</severity>
<alarm-data
clear-key="uei.opennms.org/COMPANY/proc-down!%nodeid%!%parm[label]%"
reduction-key="%uei%:%nodeid%:%parm[label]%" alarm-type="2" auto-clean="true" />
</event>
<event>
<uei xmlns="">uei.opennms.org/COMPANY/proc-error</uei>
<event-label xmlns="">Process Error</event-label>
<descr xmlns="">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>
<severity xmlns="">Minor</severity>
<alarm-data reduction-key="%uei%!%nodeid%!%parm[label]%" alarm-type="1" auto-clean="false" />
</event>
<event>
<uei xmlns="">uei.opennms.org/COMPANY/proc-error-rearmed</uei>
<event-label xmlns="">Process Error - Re-Armed</event-label>
<descr xmlns="">Threshold rearmed for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]</descr>
<logmsg dest="logndisplay">Threshold rearmed for %service% datasource %parm[ds]% on interface %interface%, parms: %parm[all]%</logmsg>
<severity xmlns="">Normal</severity>
<alarm-data
clear-key="uei.opennms.org/COMPANY/proc-error!%nodeid%!%parm[label]%"
reduction-key="%uei%:%nodeid%:%parm[label]%" alarm-type="2" auto-clean="true" />
</event>
</events>
Step 5: notifications.xml
Add to /opt/opennms/etc/notifications.xml before the </notifications> tag.
<notification name="Process Not Running" status="on" writeable="yes">
<uei xmlns="">uei.opennms.org/COMPANY/proc-down</uei>
<description xmlns="">A process is not running</description>
<rule xmlns="">(IPADDR IPLIKE *.*.*.*)</rule>
<destinationPath xmlns="">email_admin</destinationPath>
<text-message xmlns="">Node: %nodelabel% 
Process: %parm[label]% 

https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
<subject xmlns="">Process Down: %parm[label]% on %nodelabel%</subject>
<numeric-message xmlns="">
Node: %nodelabel% 
Process: %parm[label]%</numeric-message>
</notification>
<notification name="Process Not Running Re-Armed" status="on" writeable="yes">
<uei xmlns="">uei.opennms.org/COMPANY/proc-down-rearmed</uei>
<description xmlns="">A process that was not running now is</description>
<rule xmlns="">(IPADDR IPLIKE *.*.*.*)</rule>
<destinationPath xmlns="">email_admin</destinationPath>
<text-message xmlns="">Node: %nodelabel% 
Process: %parm[label]% 

https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
<subject xmlns="">RESOLVED: Process Down: %parm[label]% on %nodelabel%</subject>
<numeric-message xmlns="">
Node: %nodelabel% 
Process: %parm[label]%</numeric-message>
</notification>
<notification name="Process Error" status="on" writeable="yes">
<uei xmlns="">uei.opennms.org/COMPANY/proc-error</uei>
<description xmlns="">A process is not running</description>
<rule xmlns="">(IPADDR IPLIKE *.*.*.*)</rule>
<destinationPath xmlns="">email_admin</destinationPath>
<text-message xmlns="">Node: %nodelabel% 
Process: %parm[label]% 

https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
<subject xmlns="">Process Error: %parm[label]% on %nodelabel%</subject>
<numeric-message xmlns="">
Node: %nodelabel% 
Process: %parm[label]%</numeric-message>
</notification>
<notification name="Process Error Re-Armed" status="on" writeable="yes">
<uei xmlns="">uei.opennms.org/COMPANY/proc-error-rearmed</uei>
<description xmlns="">A process that was not running now is</description>
<rule xmlns="">(IPADDR IPLIKE *.*.*.*)</rule>
<destinationPath xmlns="">email_admin</destinationPath>
<text-message xmlns="">Node: %nodelabel% 
Process: %parm[label]% 

https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
<subject xmlns="">RESOLVED: Process Error: %parm[label]% on %nodelabel%</subject>
<numeric-message xmlns="">
Node: %nodelabel% 
Process: %parm[label]%</numeric-message>
</notification>
Step 6: Restart OpenNMS
To activate the configuration -
service opennms restart






