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服务器进行服务注册和健康检查。
感谢阅读,希望这篇文章能给你带来帮助!