Amazon ECS的弹簧执行器运行状况检查脚本

问题描述 投票:0回答:2

我有一个使用弹簧执行器的弹簧启动应用,并且在以下路径下:localhost:8080 / my-app / health,它返回:

{
"status":"UP"
}

如果没有:

{
"status":"DOWN"
}

我希望ECS在状态关闭几次后重新启动容器。我在容器定义中添加了jq,还在任务定义中添加了运行状况检查,如下所示:

...
"healthCheck": {
        "retries": 10,
        "command": [
          "CMD-SHELL",
          "[[ $(curl -s 'http://localhost:8080/my-app/health' | jq -r '.status') == \"UP\" ]] && exit 0 || exit 1 "
        ],
        "timeout": 5,
        "interval": 60,
        "startPeriod": 300
      }
...

但是ECS不断重启我的服务。谁能帮助我,说如何创建这种健康检查?

spring amazon-ecs spring-boot-actuator
2个回答
0
投票

无需解析JSON。只需检查HTTP状态代码即可。

[ "CMD-SHELL", "curl -f http://localhost:8080/my-app/health || exit 1" ]

如果状态码为2xx,则表明容器已准备就绪且状态良好。


0
投票

问题是CMD-SHELL使用不支持[[...]]语法的sh运行脚本。检查容器运行状况检查日志对我有很大帮助:

docker inspect --format "{{json .State.Health }}" <container name> | jq
© www.soinside.com 2019 - 2024. All rights reserved.