Process Monitoring and Collection

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% &#xd;
Process: %parm[label]% &#xd;
&#xd;
https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
        <subject xmlns="">Process Down: %parm[label]% on %nodelabel%</subject>
        <numeric-message xmlns="">&#xd;
Node: %nodelabel% &#xd;
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% &#xd;
Process: %parm[label]% &#xd;
&#xd;
https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
        <subject xmlns="">RESOLVED: Process Down: %parm[label]% on %nodelabel%</subject>
        <numeric-message xmlns="">&#xd;
Node: %nodelabel% &#xd;
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% &#xd;
Process: %parm[label]% &#xd;
&#xd;
https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
        <subject xmlns="">Process Error: %parm[label]% on %nodelabel%</subject>
        <numeric-message xmlns="">&#xd;
Node: %nodelabel% &#xd;
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% &#xd;
Process: %parm[label]% &#xd;
&#xd;
https://opennms_server/opennms/event/detail.jsp?id=%eventid%</text-message>
        <subject xmlns="">RESOLVED: Process Error: %parm[label]% on %nodelabel%</subject>
        <numeric-message xmlns="">&#xd;
Node: %nodelabel% &#xd;
Process: %parm[label]%</numeric-message>
    </notification>

Step 6: Restart OpenNMS

To activate the configuration -

service opennms restart
Personal tools
DevJam 2008 Sponsors
DevJam 2008 Sponsor: Google
DevJam 2008 Sponsor: Netregistry
DevJam 2008 Sponsor: Papa John's
NewEdge Networks
OpenNMS takes home the gold award!
Join the Free Software Foundation
Support This Project Commercial OpenNMS Support OpenNMS Italia Get OpenNMS at SourceForge.net. Fast, secure and Free Open Source software downloads Our Network Simulator Our Java Profiler