通过检查状态结果判断来执行事件生成,然后触发consul watch执行。
比如ping 结果状态为失败 ,就执行consul event -name=pingfailed。然后触发consusl watch执行需要执行的脚本或者命令。
ping检查服务:
{
"check": {
"id": "ping",
"name": "ping test",
"args":[ "/root/test.py"],
"interval": "30s",
"timeout": "10s"
}
}
ping检查python脚本:
#!/usr/bin/python2.7
import os
import sys
iplist = list()
ip = '172.17.224.122'
# ip = '172.24.186.191'
#ip = 'www.baidu.com'
backinfo = os.system('ping -c 1 -w 1 %s'%ip)
print 'backinfo'
print backinfo
print type(backinfo)
if backinfo:
os.system('consul event -name=pingfailed')
else:
iplist.append(ip)
print iplist
consusl watch检查并执行命令
consul watch -type=event -name=pingfailed /root/consul-watch-handler.sh
效果如下:
正常情况下:
错误情况下产生错误事件如下: