首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么consul health check返回空数组?

为什么consul health check返回空数组?
EN

Stack Overflow用户
提问于 2018-01-23 13:38:39
回答 1查看 1.1K关注 0票数 1

我们有一个docker-compose.yml文件:

代码语言:javascript
复制
version: '3'
services:
  consul:
    container_name: consul
    command: agent -dev -config-dir=/consul/config
    dns: 8.8.8.8
    hostname: consul-docker
    image: docker-registry.mycompany.net/ap/consul-ent:0.9.2
    ports:
      - "8500:8500"
    volumes:
      - ./consul/config/conf.json:/consul/config/conf.json

# https://github.com/gliderlabs/registrator
  registrator:
    command: consul://consul:8500
    container_name: registrator
    depends_on:
      - consul
    image: gliderlabs/registrator:latest
    restart: always
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock

  myservice1:
    container_name: myservice1
    image: docker-registry.mycompany.net/ap/myservice1/develop:latest
    ports:
      - "8080:8080"
      - "5000:5000"

# more services below

当我通过转到http://localhost:8500/v1/health/checks/myservice1使用consul v1 API检查健康状态时,它返回一个空数组[]。

根据docker ps和myservice1的日志,myservice1已准备就绪。

http://localhost:8500/ui/#/dc1/services上的myservice1显示为绿色

myservice1是一个基于dropwizard的Java微服务。

根据https://www.consul.io/api/health.html的说法,样本响应

代码语言:javascript
复制
$ curl https://consul.rocks/v1/health/service/my-service

看起来像这样:

代码语言:javascript
复制
[
  {
    "Node": {
      "ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
      "Node": "foobar",
      "Address": "10.1.10.12",
      "Datacenter": "dc1",
      "TaggedAddresses": {
        "lan": "10.1.10.12",
        "wan": "10.1.10.12"
      },
      "Meta": {
        "instance_type": "t2.medium"
      }
    },
    "Service": {
      "ID": "redis",
      "Service": "redis",
      "Tags": ["primary"],
      "Address": "10.1.10.12",
      "Port": 8000
    },
    "Checks": [
      {
        "Node": "foobar",
        "CheckID": "service:redis",
        "Name": "Service 'redis' check",
        "Status": "passing",
        "Notes": "",
        "Output": "",
        "ServiceID": "redis",
        "ServiceName": "redis",
        "ServiceTags": ["primary"]
      },
      {
        "Node": "foobar",
        "CheckID": "serfHealth",
        "Name": "Serf Health Status",
        "Status": "passing",
        "Notes": "",
        "Output": "",
        "ServiceID": "",
        "ServiceName": "",
        "ServiceTags": []
      }
    ]
  }
]

根据注册器日志,它看到myservice1正常,正在添加myservice1。

有什么想法可以解释为什么我会看到[]回复吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 13:39:43

在遵循https://gliderlabs.com/registrator/latest/user/backends/上的说明后,我能够进行基本的健康检查。我的印象是,在设置注册器和领事后,健康检查将自动工作。我需要在docker-compose.yml中提供环境变量来设置HTTP检查,如下所示:

代码语言:javascript
复制
SERVICE_80_CHECK_HTTP=/health/endpoint/path
SERVICE_80_CHECK_INTERVAL=15s
SERVICE_80_CHECK_TIMEOUT=1s     # optional, Consul default used otherwise
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48394907

复制
相关文章

相似问题

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