Consul 健康检查(检查节点) - Part.4
在上一节 Consul 注册服务和健康检查(script检查) - Part.3 定义的两个健康检查中,chk_service1和chk_service2分别和服务datacollect.server1和datacollect.server2关联起来了。健康检查也可以不关联任何服务独立运行。例如,我们可以写一个健康检查的脚本,检查节点的内存,当内存占用低于70%时返回 通过,介于70%~90%之间时返回 警告,高于90%时返回失败。
编写检查内存的Python脚本
前面两篇的操作都是在我的个人工作电脑上,在生产环境下通常部署在Linux系统上。因为检查Mac/Windows/Linux 内存的脚本各不相同,为了使脚本更通用,接下来的操作我们在 Consul 安装和配置Server - Part.1 中搭建的局域网服务器192.168.1.56上进行(这台是 consul server但是 consul server也可以兼作client)。先创建所需的目录:
# mkdir -p /opt/consul/scripts;
编写内存检查的python脚本,check_mem.py,位于创建的/opt/consul/scripts下:
import sys
if __name__ == '__main__':
with open('/proc/meminfo') as meminfo:
for line in meminfo:
if line.startswith('MemFree'):
free = line.split()[1]
if line.startswith('MemTotal'):
total = line.split()[1]
freeMem = int(free)/1024.0
totalMem = int(total)/1024.0
percent = freeMem*100/totalMem
print "free:{0:.2f}MB({1:.2f}%), total:{2:.2f}MB".format(freeMem, percent, totalMem)
occupied = 100 - percent
if occupied < 70 :
sys.exit(0)
elif occupied >= 70 and occupied < 90:
sys.exit(1)
else:
sys.exit(2)
编写健康检查的配置文件
创建一个check_mem.json文件,放置在配置文件目录下(/opt/consul/config):
{
"checks": [
{
"id": "chk_mem",
"name": "chk_mem",
"notes": "检查系统内存占用",
"args": ["python", "/opt/consul/scripts/check_mem.py"],
"interval": "10s"
}
]
}
这里需要注意的是:配置文件中不再有service_id节点,也就是这个健康检查脚本不和任何的服务关联。
运行查看结果
解析来执行consul reload重新加载一下配置文件:
# consul reload Configuration reload triggered
打开consul WebUI,可以看到类似下面这样的结果,说明已经加载成功:

总结
这样我们就完成了对节点内存占用情况的检查,类似地,可以编写对节点 CPU、磁盘剩余、网络带宽 占用的检查。这里就不再演示了。接下来,我们来看下如何对Web服务器进行服务注册和健康检查。
感谢阅读,希望这篇文章能给你带来帮助!