Grafana 显示 consul_up指标显示leader节点在18:00后发生down现象
image.png
源码分析
consul exporter 暴露的 consul_up指标,实际上是通过Http向各个endpoint发起请求,只要任意一个endpoint请求超时或者server端内部异常,则标识consul_down。
API映射
-
ok = e.collectPeersMetric(ch) r := s.c.newRequest("GET", "/v1/status/peers") 查询consul server 列表 (status.go)
-
ok = e.collectLeaderMetric(ch) r := s.c.newRequest("GET", "/v1/status/leader") 查询consul server leader (status.go)
-
ok = e.collectNodesMetric(ch) r := c.c.newRequest("GET", "/v1/catalog/nodes") 查询consul node 列表 (catalog.go)
-
ok = e.collectMembersMetric(ch) r := a.c.newRequest("GET", "/v1/agent/members") 查询gossip members (agent.go)
-
ok = e.collectServicesMetric(ch) r := c.c.newRequest("GET", "/v1/catalog/services") 查询所有service列表 (catalog.go)
-
ok = e.collectHealthStateMetric(ch) r := h.c.newRequest("GET", "/v1/health/state/any) 查询所有状态的service (health.go)
-
ok = e.collectKeyValues(ch)
Consul exporter LEVEL=ERROR日志
结论
consul down原因:consul exporter 向consul server leader GET "/v1/status/peers请求超时,导致失败, 因此consul down并不意味着consul server leader 挂掉。
目前,exporter 请求consul server 的默认consul.timeout=500ms,至于为何超时,可能由于某个时刻 consul server leader cpu 负载较大,未能及时响应请求。
image.pngimage.png
consul 的性能瓶颈主要体现为:read受cpu约束 ,write 受i/o约束。
服务型建议选择高CPU,ESSD磁盘,内存要求不是很高
网友评论