ICMP / Latenzen Überwachung – OpenNMS

Posted: 8th März 2012 by Thorben Hemmler in OpenNMS

Überwachung von Latenzen im Netzwerk mit OpenNMS

Das Problem bei der Standardkonfig ist, dass man nur alle 5 Minuten Messwerte bekommt. Innerhalb 5 Minuten haben aber Anwender schon angerufen. Meist will man das aber schon vorher wissen. An den Werten (z.B. Timeout, retry etc.) kann (und vermutlich muss) natürlich ein wenig gedreht werden. Je nach Situation.

Den Service ICMP aus der Group Example1 in der Datei poller-configuration.xml auskommentieren.

<?xml version="1.0"?>
<?castor class-name="org.opennms.netmgt.poller.PollerConfiguration"?>
<poller-configuration threads="30"
                     serviceUnresponsiveEnabled="false"
                     nextOutageId="SELECT nextval('outageNxtId')"
                     xmlrpc="false">
  <node-outage status="on" pollAllIfNoCriticalServiceDefined="true">
    <critical-service name="ICMP" />
  </node-outage>
  <package name="example1">
    <filter>IPADDR != '0.0.0.0'</filter>
    <specific>0.0.0.0</specific>
    <include-range begin="1.1.1.1" end="254.254.254.254" />
    <include-url>file:/usr/share/opennms/etc/include</include-url>
    <rrd step="300">
      <rra>RRA:AVERAGE:0.5:1:2016</rra>
      <rra>RRA:AVERAGE:0.5:12:1488</rra>
      <rra>RRA:AVERAGE:0.5:288:366</rra>
      <rra>RRA:MAX:0.5:288:366</rra>
      <rra>RRA:MIN:0.5:288:366</rra>
    </rrd>
<!--
    <service name="ICMP" interval="300000" user-defined="false" status="on">
     <parameter key="retry" value="2" />
     <parameter key="timeout" value="3000" />
     <parameter key="rrd-repository" value="/var/lib/opennms/rrd/response" />
     <parameter key="rrd-base-name" value="icmp" />
     <parameter key="ds-name" value="icmp" />
   </service>
-->

Dann eigenes Packet dafür machen:

    <package name="15seconds">
        <filter>IPADDR != '0.0.0.0'</filter>
        <include-range begin="1.1.1.1" end="254.254.254.254"/>
        <rrd step="15"> <!-- Sekunden -->
            <rra>RRA:AVERAGE:0.5:1:40320</rra>
            <rra>RRA:AVERAGE:0.5:240:1488</rra>
            <rra>RRA:AVERAGE:0.5:5760:366</rra>
            <rra>RRA:MAX:0.5:5760:366</rra>
            <rra>RRA:MIN:0.5:5760:366</rra>
        </rrd>
        <service name="ICMP" interval="15000" user-defined="false" status="on"> <!-- in Mikrosekunden -->
            <parameter key="retry" value="2"/> <!-- Wiederholungen bei Fehler -->
            <parameter key="timeout" value="1500"/> <!-- Zeitüberschreitung -->
            <parameter key="rrd-repository" value="/var/lib/opennms/rrd/response"/>
            <parameter key="rrd-base-name" value="icmp"/>
            <parameter key="ds-name" value="icmp"/>
            <parameter key="thresholding-enabled" value="true"/> <!-- inline thresholding -->
        </service>
        <downtime begin="0" end="300000" interval="10000"/>
        <downtime begin="300000" end="43200000" interval="300000"/>
        <downtime begin="43200000" end="432000000" interval="600000"/>
        <downtime begin="432000000" delete="true"/>
    </package>

edit: 04.06.2012: RRD Einträge passend geändert. Siehe hier

Der Threshold muss in der Datei thresholds.xml definiert werden:

<group name="ping" rrdRepository="/var/lib/opennms/rrd/response/">
        <expression type="high" ds-type="if" value="300.0" rearm="100.0"
            trigger="3" ds-label="icmp_latency"
            triggeredUEI="opennms.org/custom/HighPing"
            rearmedUEI="opennms.org/custom/HighPingOK"
            filterOperator="or" expression="icmp/1000"/>
    </group>

Wenn man will, noch eine Notification für den Threshold (vorsicht bei zu niedriger Schwelle, dann kommen ordentlich Mails) in der notifications.xml anlegen:

<notification name="highPing" status="on" writeable="yes">
        <uei>opennms.org/custom/HighPing</uei>
        <rule>(IPADDR IPLIKE *.*.*.*) &amp;  (isICMP )</rule>
        <destinationPath>administratoren_instant</destinationPath>
        <text-message>Hohe Latenz (%parm[value]%ms/45s) zu Geraet: %nodelabel%, Schnittstelle:%interface%.&#xd;
Schwelle: %parm[threshold]%ms.</text-message>
        <subject>#%noticeid%: %nodelabel%: Latenz hoch!</subject>
        <numeric-message>111-%noticeid%</numeric-message>
    </notification>

Falls die Notifications automatisch durch die „RESOLVED-Meldung“ bestätigt werden sollen in der Datei /etc/opennms/notifd-configuration.xml den passenden Autoacknowledge mit rein:

    <auto-acknowledge resolution-prefix="BEHOBEN: "
        uei="opennms.org/custom/HighPingOK" acknowledge="opennms.org/custom/HighPing">
        <match>nodeid</match>
    </auto-acknowledge>

Vielen Dank an Marcel Fuhrmann für diesen Beitrag.

  1. Daniel sagt:

    Danke für diese Infos :D