Uploaded image for project: 'OpenNMS'
  1. OpenNMS
  2. NMS-4951

Provisiond never generates nodeCategoryMembershipChanged events




      Steps I took to reproduce in my environment (example uses pollerd, though I've hit the same issue with collectd):

      • Disable all stock poller packages dealing with ICMP
      • Create the following poller package:
        <package name="poller-ICMP-1min">
          <filter><![CDATA[(catincP-ICMP-1min & catincS-Production)]]></filter>
          <rrd step="60">                       <!-- sample rate is every 60 seconds -->
            <rra>RRA:AVERAGE:0.5:1:11520</rra>  <!-- keep 8 days (11520 1 min samples) of unconsolidated data -->
            <rra>RRA:AVERAGE:0.5:5:4320</rra>   <!-- keep 15 days (4320 5 min samples) of 5min averages -->
            <rra>RRA:AVERAGE:0.5:60:2256</rra>  <!-- keep 94 days (2256 60 min samples) of 60min averages -->
            <rra>RRA:MIN:0.5:60:2256</rra>      <!-- keep 94 days (2256 60 min samples) of 60min min values -->
            <rra>RRA:MAX:0.5:60:2256</rra>      <!-- keep 94 days (2256 60 min samples) of 60min max values -->
            <rra>RRA:AVERAGE:0.5:1440:366</rra> <!-- keep 366 days (366 1440 min samples) of 1440min averages -->
            <rra>RRA:MIN:0.5:1440:366</rra>     <!-- keep 366 days (366 1440 min samples) of 1440min min values -->
            <rra>RRA:MAX:0.5:1440:366</rra>     <!-- keep 366 days (366 1440 min samples) of 1440min max values -->
          <service name="ICMP" interval="60000" user-defined="false" status="on">
            <parameter key="retry" value="1" />
            <parameter key="timeout" value="1000" />
            <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response" />
            <parameter key="rrd-base-name" value="icmp" />
            <parameter key="ds-name" value="icmp" />
          <downtime interval="10000" begin="0" end="300000"/>          <!-- Poll every 10 sec for first 5 min of downtime -->
          <downtime interval="60000" begin="300000" end="1440000"/>    <!-- Poll every 60 sec from 5 min to 1 hour of downtime -->
          <downtime interval="300000" begin="1440000"/>                <!-- Poll every 5 min from 1 hour of downtime onward -->
      • Provision a new node and assign it to the node category P-ICMP-1min (but not S-Production) and synchronize
      • As a second step, add the S-Production category to the node, and synchronize


      Pollerd/Collectd (and perhaps other daemons as well) don't pick up on the node category changes. For example, a node provisioned with just the ICMP service and categorized as in the above two-step workflow will show ICMP as "Not Monitored" because no poller package matches.

      Once OpenNMS is restarted, pollerd sees the category changes properly and ICMP will show up as Monitored and be properly polled.

      Expected behavior:

      Daemons using catinc-based filters in their configurations should be able to pick up on category changes of a node without requiring a complete OpenNMS restart.

      Working branch: https://github.com/OpenNMS/opennms/tree/jira/NMS-4951




            Unassigned Unassigned
            andye@narsnet.com Andy Ellsworth (Inactive)
            9 Vote for this issue
            6 Start watching this issue