首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将healthcheck与docker swarm集成?

如何将healthcheck与docker swarm集成?
EN

Stack Overflow用户
提问于 2019-08-13 16:19:29
回答 1查看 532关注 0票数 0

我正在尝试将healthcheck与docker swarm集成。我已经创建了自己的自定义健康检查API来监控容器的健康状况。我在yaml文件中使用以下标签进行健康检查:

代码语言:javascript
运行
复制
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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-13 16:41:43

可以在脚本中包含所有内容,并使用

代码语言:javascript
运行
复制
healthcheck:
    test: ["CMD", "python", "/path/script.py" , "YOUR_HOSTNAME" ]

示例脚本:

代码语言:javascript
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57473763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档