【问题标题】:Unable to create Http Health Check from config file Consul无法从配置文件 Consul 创建 Http 健康检查
【发布时间】:2018-01-16 12:01:34
【问题描述】:

我一直在尝试使用配置文件为 REST 服务创建 http 健康检查。

在加载 consul 时,它从配置文件中读取服务详细信息,并反映在 8500 Web UI 中。

但它没有为该服务添加健康检查详细信息。

健康检查与服务定义一起时也不会显示错误(案例1)。

但是当尝试单独提供健康检查配置时它会通知错误。 (案例二)

但是,当通过 rest api 添加时,我可以成功添加 http 健康检查。 (案例3)

带有服务细节的健康检查:-(案例 1)

{
"service": {
"id":"somename",
"name":"nameofthissevice",
"service": "myservice",
"address": "127.0.0.1",
"port": 62133,
"enableTagOverride": false,
"check": {      
"HTTP": "http://127.0.0.1:62133/Service1.svc/MyService/PingMe",
"Interval": "5s"    
}
}
}

单独的健康检查配置:-(案例 2)

"check": {    
"http": "http://127.0.0.1:62133/Service1.svc/MyService/PingMe",
"interval": "5s",
"timeout": "150s",
"ttl" : "100s"
}

通过 C# 中的代码进行健康检查:-(案例 3)

var check = new AgentServiceCheck()
        {
            Interval = TimeSpan.FromSeconds(10),
            HTTP = "http://127.0.0.1:62133/Service1.svc/MyService/PingMe",
            DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10)
        };

var srv = new AgentServiceRegistration()
        {
            XXXXX,
            Check = check
        };

var result = client.Agent.ServiceRegister(srv).GetAwaiter().GetResult();            

我正在使用适用于 windows 的 Consul V.0.9.0。

这是我的领事日志。

==> 领事代理正在运行!
版本:'v0.9.0'
节点 ID:'d0afc715-46d0-6087-27e9-a388cc274bd2'
节点名称:“BETA-PC”
数据中心:“dc1”
服务器:真(引导:假)
客户端地址:127.0.0.1(HTTP:8500,HTTPS:-1,DNS:8600)
集群地址:127.0.0.1(局域网:8301,广域网:8302)
Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false

==> 日志数据现在将在发生时流入:

2017/08/11 00:18:23 [DEBUG] Using random ID "d0afc715-46d0-6087-27e9-a388cc274bd2" as node ID                                                     
2017/08/11 00:18:23 [DEBUG] agent: restored service definition "somename" from "services\\ServiceRegister.json"                                   
2017/08/11 00:18:23 [WARN] raft: Heartbeat timeout from "" reached, starting election                                                             
2017/08/11 00:18:23 [INFO] consul: member 'BETA-PC' joined, marking health alive                                                                  
2017/08/11 00:18:24 [INFO] agent: Synced service 'somename'                                                                                       
2017/08/11 00:18:24 [DEBUG] agent: Node info in sync                                                                                              
2017/08/11 00:22:33 [DEBUG] http: Request GET /v1/internal/ui/nodes?dc=dc1&token=<hidden> (0s) from=127.0.0.1:52479                               
2017/08/11 00:22:33 [DEBUG] http: Request GET /v1/catalog/datacenters (37.0021ms) from=127.0.0.1:52478                                            
2017/08/11 00:22:33 [DEBUG] http: Request GET /v1/coordinate/nodes?dc=dc1&token=<hidden> (14.0008ms) from=127.0.0.1:52480                         
2017/08/11 00:22:33 [DEBUG] http: Request GET /v1/internal/ui/services?dc=dc1&token=<hidden> (0s) from=127.0.0.1:52480                            
2017/08/11 00:22:33 [DEBUG] http: Request GET /v1/health/service/myservice?dc=dc1&token=<hidden> (1.0001ms) from=127.0.0.1:52480            

谁能提供这方面的一些信息。

谢谢

【问题讨论】:

    标签: c# consul


    【解决方案1】:

    case 1 有大写的 HTTP 键,这似乎是一个错误 - https://www.consul.io/docs/agent/checks.html

    案例 2 - 如果这是您的整个检查文件,则 JSON 无效(用 { } 包装)。您可能还想通过指定 service_id 将其链接到服务

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2017-02-02
      • 2016-10-13
      • 2021-05-30
      • 2019-09-24
      • 1970-01-01
      相关资源
      最近更新 更多