[Nagiosplug-devel] Plugin Wrapper written in python

Jamin Becker jaminbecker at gmail.com
Fri Nov 9 15:44:08 CET 2012


The other day I wrote a sort of wrapper that uses Nagios' check_icmp plugin
to monitor several nodes on our network. If any one of the nodes down it
returns a value of 1 (WARNING), if two or more nodes go down it returns a
value of 2 (CRITICAL).

Unfortunately, even if it is critical it still shows up as Ok...even though
I know it is returning a value of 2. The plugin is written in python.

#!/usr/bin/env python
import os
import subprocess
home="/usr/lib/nagios/plugins"

def checkNodes():
        up = 0
        aProblemsDetected=0
        bProblemsDetected=0
        cProblemsDetected=0
        status=0
    message=" - "
        TEST_OK=0
           TEST_WARNING=1
        TEST_CRITICAL=2
        TEST_UKNOWN=3
        try:

cloud_alpha_status=subprocess.check_output(home+"/check_icmp -H cloud-alpha
",shell=True)
                if "OK" in cloud_alpha_status:
                        ++up

                else:
                        message=message+ "Cloud Bravo does not seem to be
reachable. "
                        aProblemsDetected=1

        except:
                message=message+"Node (Cloud-Alpha) is either down or
unreachable. "
        aProblemsDetected=1
        try:

cloud_bravo_status=subprocess.check_output(home+"/check_icmp -H
cloud-bravo",shell=True)
                if "OK" in cloud_bravo_status:
                        ++up
                else:
                        print cloud_bravo_status
                        message=message+"Cloud Bravo does not seem to be
reachable. "
                        bProblemsDetected=1
        except:
                message=message+"Node (Cloud-Bravo) is either down or
unreachable. "
                bProblemsDetected=1
        try:

cloud_charlie_status=subprocess.check_output(home+"/check_icmp -H
cloud-charlie",shell=True)
                if "OK" in cloud_charlie_status:
                        ++up
                else:
                        print cloud_charlie_status
                        message=message+"Cloud Charlie does not seem to be
reachable. "
                        cProblemsDetected=1
        except:
                print "Node (Cloud-Charlie) is either down or unreachable. "
                cProblemsDetected=1

        if aProblemsDetected+bProblemsDetected+cProblemsDetected==0:
                status=TEST_OK
                message=message+"CLUSTER IS UP! -- Cloud-Alpha up --
Cloud-Bravo up -- Cloud-Charlie up"
        code='OK'
        if aProblemsDetected+bProblemsDetected+cProblemsDetected==1:
                status=TEST_WARNING
        code='WARNING'
                message="Errors Detected:"+message
        elif aProblemsDetected+bProblemsDetected+cProblemsDetected>1:
                status=TEST_CRITICAL
                message="Many Errors Detected"+message
        code='CRITICAL'
        return status,(code+' '+message)

print checkNodes()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-plugins.org/archive/devel/attachments/20121109/2a937603/attachment.html>


More information about the Devel mailing list