我正在尝试将healthcheck与docker swarm集成。我已经创建了自己的自定义健康检查API来监控容器的健康状况。我在yaml文件中使用以下标签进行健康检查:
healthcheck:
test: curl -X GET -sf https://${HOSTNAME}:port/module_name/health || exit 0
interval: 30s
timeout: 3s
retries: 25
在这里,我尝试了不同的API响应,如json对象,200响应,500响应也尝试了0和1返回值。但在每种情况下,docker都不能理解我的健康API的响应。容器的行为完全取决于我在测试标记的退出代码中提到的任何值,如果我设置exit 0容器总是健康的,或者如果设置exit 1容器总是不健康的。
healthcheck如何理解我的自定义API响应?例如:如果我的自定义API返回500或1,那么healthcheck应该认为这是错误的,需要将容器标记为不健康。
有没有人能帮助我理解如何在docker-swarm中使用healthcheck?
发布于 2019-08-13 16:41:43
可以在脚本中包含所有内容,并使用
healthcheck:
test: ["CMD", "python", "/path/script.py" , "YOUR_HOSTNAME" ]
示例脚本:
import requests
import sys
if len(sys.argv) < 2:
print("Please supply the hostname")
sys.exit(1)
hostname = sys.argv[1]
url = "http://%s/healthcheck" % hostname
try:
get_url = requests.get(url)
response = get_url.text
if response == "1":
print("expect to get 0 but get 1 with response code %s" % get_url.status_code)
sys.exit(1)
except Exception as e:
print(str(e))
sys.exit(1)
https://stackoverflow.com/questions/57473763
复制相似问题