Consul有多个组件,但总体而言,它是基础架构中的一款服务发现和配置的工具。 它提供了几个关键功能:
服务发现:Consul client 可以提供服务,例如api或mysql,也可以使用Consul client来发现指定服务的提供者。 使用DNS或HTTP,应用程序可以轻松找到他们所依赖的服务。
健康检查:Consul client 可以提供任何数量的健康检查,或者与给定的服务(“Web服务器是否返回200 OK”),或与本地节点(“内存利用率是否低于90%”)相关联。 可以使用此信息来监控集群运行状况,服务发现组件使用此信息将流量从有问题的主机中移除出去。
KV Store:应用程序可以使用Consul的分层键/值存储,包括动态配置,功能标记,协调,leader选举等等。 简单的HTTP API使其易于使用。
多数据中心:Consul支持多个数据中心。 这意味着Consul的用户不必担心构建额外的抽象层以扩展到多个区域
docker run -tid --restart=always -p 9107:9107 --name consul-expoter prom/consul-exporter:latest --consul.server=172.19.209.51:8500
动日志如下:
level=info caller=consul_exporter.go:486 msg=“Starting consul_exporter” version=“(version=0.7.1, branch=HEAD, revision=ae46e2ea980ecf1c961bf332b71160be707b5e98)”
zevel=info caller=consul_exporter.go:487 build_context=“(go=go1.14.6, user=root@fdd571c00696, date=20200721-15:34:41)”
level=info caller=consul_exporter.go:538 msg=“Listening on address” address=:9107
默认监听9107端口,访问http://localhost:9107即可看到:
- job_name: consul-exporter
static_configs:
- targets: ['172.19.209.51:9107']
推荐:Consul Exporter Dashboard
ID是12049
。
显示服务总数,Consul Peer数量和Leader数量、不健康的Consul服务、Consul服务与服务检测信息。
Consul是否Down
配置文件consul_exporter_alerting_rules.yml如下:
groups:
- name: consul
rules:
- alert: ConsulDown
annotations:
description: |-
Consul instance is down
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Consul down (instance {{ $labels.instance }})
expr: consul_up == 0
for: 5m
labels:
severity: critical
prometheus.yml配置如下:
rule_files:
停掉Consul,可以看到如下告警:
启动Consul,告警消失。