2017-08-08 102 views
0

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

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

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

运行状况检查与服务定义(情况1)一起时也不显示任何错误。

但它试图给健康检查配置seperatly时通知错误。 (情况2)

但是,当通过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)在C#中通过代码

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

健康检查: - (情况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();    

我正在使用Consul V.0.9.0 for windows。

这是我的领事日志。

==>领事代理正在运行!
版本: '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(LAN:8301,WAN:8302)
闲话加密:假,中RPC TLS:错误,TLS-传入:错误

==>日志数据现在会流入:

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    

任何人都可以提供一些关于这一个的信息。

THX

回答

0

壳体1这似乎是一个错误大写HTTP关键 - https://www.consul.io/docs/agent/checks.html

情况下2 - 如果这是你的整个检查文件,该JSON是无效的(带包起来{})。您可能还想通过指定service_id将其链接到该服务