Process Monitoring and Collection
Subscribe

From OpenNMS

Jump to: navigation, search

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