Nagios插件[python]来检查URL状态

时间:2014-07-01 12:15:16

标签: python monitoring nagios

我有一个自定义插件,它使用memSQL API(返回JSON)检查memSQL内存使用情况,作为检查的一部分,首先我测试URI本身是否可访问。如果不是,请使用check_nrpe测试插件按预期工作。

root@dops-nagios:/usr/lib/nagios/plugins# ./check_nrpe -H 10.200.22.203 -c check_memsql_memory
HTTP Error 400: Bad Request

但是在weg-gui上,我看到了:

NRPE: Unable to read output

我正在检查的URI是这样的:http://10.200.22.201:9000/api/health_check以及检查它的函数:

def chk_serv(addr,port,path):

    st = re.compile(r'htt(p|ps)://s+')
    if not st.match(addr):
        if port == "443": addr = "https://" + addr
        else: addr = "http://" + addr

    path = path.lstrip('/')
    if path[0:3] == 'api': path = '/'+path
    else: path = '/api/'+path

    # Connecton status
    URI =  addr+":"+str(port)+path
    try:
        resp = urllib2.urlopen(URI,None,timeout=10)
        sts = str(resp.code)

    except urllib2.HTTPError, er:
        print("{0}".format(er))
        sys_exit(STATUS_CRITICAL)

    except urllib2.URLError, er:
        print("{0}".format(er))
        sys_exit(STATUS_CRITICAL)

    if sts in ['200', '301']:
         return json.load(resp)
    else: 
         print('Status Unknown!!'); sys_exit(STATUS_UNKNOWN)

谁能告诉我,我做错了什么?这是我的坏蟒蛇还是坏唠叨? 仅供参考,它仅在API关闭时发生。如果只是[[重新]启动API,一切都可以从控制台和gui中正常工作。

最佳!!

0 个答案:

没有答案