Example of a Shell Script Plugin

The following is an example of a plugin using a shell script. This particular plugin reports an event in Nagios XI when a node.left event occurs. A node.left event occurs whenever a node leaves the cluster.

For a list of other kinds of events that occur in a Terracotta cluster, see "Monitoring Cluster Events" in the BigMemory Max Administrator Guide.

#!/bin/bash 
# Parameters 
# ---------- 
SERVER=$1    # The IP address or resolvable hostname of a Terracotta server. 
PORT=$2      # The Terracotta server's management-port (9540 by default). 
INTERVAL=$3  # How far back in time, in minutes, to search for the event. 
RESTURL="http://${SERVER}:${PORT}/tc-management-api/agents/ 
operatorEvents?sinceWhen=${INTERVAL}m" 
GET_INFO=`curl "$RESTURL" -s | grep left` 
NB_LINES=`echo $GET_INFO | wc -l` 
if [[ $NB_LINES -gt 0 ]]; then 
       SERVER_LIST='' 
       for i in `echo $GET_INFO | sed 's/.*Node\(.*\)left the cluster.*/\1/g'`; 
         do SERVER_LIST="$SERVER_LIST $i"; done 
       echo $SERVER_LIST 
       CHECK="NODE_LEFT" 
else 
       CHECK="NO_EVENT" 
fi 
if [[ "$CHECK" == "NODE_LEFT" ]]; then 
   echo "NODE LEFT EVENT: $SERVER_LIST" 
   exit 2 
elif [[ "$CHECK" == "NO_EVENT" ]]; then 
   echo "No NODE LEFT Event: ${SERVER}" 
   exit 0 
else 
   echo "Check failed" 
   exit 3 
fi

Note that the script's exit codes follow the standard required for Nagios plugins:

Value Status Description
0 OK The plugin was able to check the service and it appeared to be functioning properly.
1 Warning The plugin was able to check the service, but it appeared to be above some "warning" threshold or did not working properly.
2 Critical The plugin detected that either the service was not running or it was above some "critical" threshold.
3 Unknown Invalid command line arguments were supplied to the plugin or low-level failures internal to the plugin occurred (such as unable to fork or open a tcp socket) that prevent it from performing the specified operation. Higher-level errors (such as name resolution errors or socket timeouts) are outside of the control of plugins and should generally NOT be reported as UNKNOWN states.

After you create the script, install it in Nagios. A number of tutorials on installing Nagios XI plugins are available on the Internet, like the one here: http://www.youtube.com/watch?v=jG1lVnire4E.

You can generalize the script to find other events by editing the REGEX pattern. Or edit the RESTURL to return other types of information.