我有一个自定义插件,它使用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中正常工作。
最佳!!