Which detector should I use to collaborate with a monitor?

Problem:
Hi,
I’ve searched the OpenNMS Docs and found that to auto-discovery my self-defined service on a node we should define a detector in a foreign source and then monitor doing the polling job. But here have some monitors that I can’t find the matched detector collaborate with:

  • CiscoPingMibMonitor
  • DeviceConfigMonitor
  • DNSResolutionMonitor
  • JCifsMonitor
  • JolokiaBeanMonitor
  • MailTransportMonitor
  • NetScalerGroupHealthMonitor
  • PageSequenceMonitor
  • PassiveStatusMonitor
  • PrTableMonitor
  • RadiusAuthMonitor
  • SSLCertMonitor
  • StrafePingMonitor
  • SystemExecuteMonitor
  • VmwareCimMonitor
  • VmwareMonitor
  • XmpMonitor

and the two monitors in which I didn’t find a related detector in any foreign source XML and Docs:

  • MinionRpcMonitor
  • MinionHeartbeatMonitor

My Expected outcome:
I want to know if all the monitor that is listed above have their specific detector collaborated with and which it is? if not, how can I tell Meridian to provision my service to the node automatically, for instance, service Script_Example monitor by SystemExecuteMonitor?

OpenNMS version: Meridian 2020.1.3

Thanks.

Detectors and monitors are not strictly pairwise, and don’t have to be related at all (except by service name)

For example, a service can be detected by the FooDetector (which isn’t real and does nothing), which is then monitored by a completely different BarMonitor that’s perhaps more specific to the service.

As an example:

      <detector name="Latency_to_FOO" class="org.opennms.netmgt.provision.detector.simple.HttpDetector">
         <parameter key="ipMatch" value="127.0.0.1"/>
         <!-- only run this detector against localhost -->
      </detector>

and the poller:

      <service name="Latency_to_FOO" interval="300000" user-defined="false" status="on">
         <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response"/>
         <parameter key="rrd-base-name" value="lat_foo"/>
         <parameter key="timeout" value="15000"/>
         <parameter key="page-sequence">
            <page-sequence xmlns="">
               <page disable-ssl-verification="true" host="foo.example.com" http-version="1.1" method="GET" path="/narf/OpenNMS_1M_Lat" port="80" response-range="100-399" scheme="http" virtual-host="foo.example.com" xmlns=""/>
            </page-sequence>
         </parameter>
      </service>

<monitor service="Latency_to_FOO" class-name="org.opennms.netmgt.poller.monitors.PageSequenceMonitor"/>

In most cases, you should be discovering nodes into a requisition. If the nodes have a requisition, you can add a service directly to the node with no detector defined in the foreign source.

Thanks, I got that they’re only related by service name.

@dino2gnt I want to ask 1 more further question. If I want to add service Script_Example automatically to the node with a detector, which detector do you suggest?

Loop Detector maybe?

Thank you very much, your response makes me feel confident with my assuming.

1 Like

Just FYI, if you want a bit more control, don’t use a detector. You can just assign any service manually to the IP interface in the requisition.