我正在尝试将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返回值。但是在每种情况下,泊坞窗都无法理解我的健康API的响应。容器的行为完全取决于我在测试标签的退出代码中提到的任何值,如果我将exit 0容器设置为始终健康,或者将set exit 1容器设置为不健康。
运行状况检查如何理解我的自定义API响应? 例:如果我的自定义API返回500或1,则healthcheck应该认为这是错误的,需要将容器标记为不健康。
有人可以帮助我了解如何在docker-swarm中使用运行状况检查吗?
答案 0 :(得分:1)
可以在脚本中包含所有内容,并使用
进行调用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)