OpenNMS implement script to get status of any service

569 Views Asked by At

I am trying to implement script(sh, py..) that will get mi True(Up) of False(Down) status if my installed app on nodes is up-to-date.

Before that, i tried to implement simple script found on net (https://wiki.opennms.org/wiki/SystemExecuteMonitor) just to see if script works.

OpenNMS is installed on Windows 10. This is what i did so far:

In poller-configuration.xml

`<service name="Test" interval="300000" user-defined="false" status="on">
     <parameter key="script" value="/etc/scripts/test.sh"/>
     <parameter key="banner" value="OK"/>
     <parameter key="retry" value="3"/>
     <parameter key="timeout" value="3000"/>
     <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response"/>
     <parameter key="ds-name" value="test"/>
</service>`

AND

`<monitor service="Test" class-name="org.opennms.netmgt.poller.monitors.SystemExecuteMonitor"/>`

In default-foreign-source.xml

`<detector name="Test" class="org.opennms.netmgt.poller.monitors.SystemExecuteMonitor">
     <parameter key="script" value="/etc/scripts/test.sh"/>
     <parameter key="banner" value="OK"/>
     <parameter key="retry" value="3"/>
     <parameter key="timeout" value="3000"/>
     <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response"/>
     <parameter key="ds-name" value="test"/>
</detector>`

And this is what i am missing: snmpd.conf

I don't have that file in OpenNMS, so my question is where should i call that script to be executed and do i miss anything else to get this working?

Thnx!

2

There are 2 best solutions below

1
Dani On

In the meantime, i've implemented groovy script like this:

In poller-configuration.xml

<service name="MinGroovy" interval="300000" user-defined="true" status="on">
     <parameter key="file-name" value="C:/OpenNMS/etc/scripts/MinimalGroovy.groovy"/>
     <parameter key="bsf-engine" value="org.codehaus.groovy.bsf.GroovyEngine"/>
     <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response" />
  </service>

AND

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

this is my groovy script:

#!/usr/bin/env groovy\
bsf_monitor.log("ERROR", "Starting MinimalGroovy.groovy", null);

filePath = "//netpath/output/temp.txt"
file = new File(filePath)

if (file.exists()){
 return "OK";
  }else{
 return "NOK";
  }

In groovy-starter.conf i added:

enter #lib for opennms
load ${opennms.home}/lib/*.jar

If i run script in groovy console, it works OK!

And this is the error i get in poller.log in OpenNMS:

ERROR [pool-9-thread-27] o.o.n.p.m.BSFMonitor: Starting MinimalGroovy.groovy

Any help?

0
indigo On

Your service definition in the poller-configuration.xml looks suspicious to me:

<service name="MinGroovy" interval="300000" user-defined="true" status="on">
    <parameter key="file-name" value="C:/OpenNMS/etc/scripts/MinimalGroovy.groovy"/>
    <parameter key="bsf-engine" value="org.codehaus.groovy.bsf.GroovyEngine"/>
    <parameter key="rrd-repository" value="/opt/opennms/share/rrd/response" />
</service>

The file name is located on "C:/..." whereas your rrd-repository is in "/opt/opennms". Do you have installed OpenNMS on Windows or Linux? The path to your groovy script in the service definition is from the OpenNMS process perspective.