在Docker环境中实施Consul健康检查

时间:2019-05-06 12:48:56

标签: docker consul registrator

我是Consul / Registrator和Docker的新手。我对在Docker环境中使用Consul运行状况检查感到困惑。在Docker + Interval部分的以下链接中对此进行了描述:https://www.consul.io/docs/agent/checks.html

以下是链接中描述的Consul健康检查定义的示例:

{ "check": { "id": "mem-util", "name": "Memory utilization", "docker_container_id": "f972c95ebf0e", "shell": "/bin/bash", "args": ["/usr/local/bin/check_mem.py"], "interval": "10s" } }

运行状况检查脚本是在Docker映像内还是在其外部(在示例中:check_mem.py)?我们是否应该知道容器的ID并手动在字段docker_container_id中插入? (这不是非常有效的方法)

我一直在搜索,唯一找到的答案是在以下讨论的结尾: https://github.com/hashicorp/consul/issues/3182

但是此代码是一些“解决方法”-它使用docker'primal'运行状况检查和注册器变量-ENV SERVICE_CHECK_SCRIPT。它不使用领事健康检查脚本。

有人可以帮助我了解领事健康检查在docker环境中如何工作。

提前谢谢!

Aleks

2 个答案:

答案 0 :(得分:0)

docker运行状况检查在docker容器中运行。

您的示例等效于docker exec f972c95ebf0e /bin/bash /usr/local/bin/check_mem.py

答案 1 :(得分:0)

考虑使用Goss进行健康验证,它允许您将端点以简单yaml格式指定的测试结果提供服务。