consul_exporter 将 Consul 服务健康状况导出到 Prometheus。

运行它:

make
./consul_exporter [flags]

导出指标

公制 意义 标签
consul_up Consul最后一次查询是否成功
consul_raft_peers Raft 集群中有多少对等点(服务器)
consul_serf_lan_members 集群中有多少成员
consul_serf_lan_member_status 集群中成员的状态。1=活着,2=离开,3=离开,4=失败。 member
consul_serf_wan_member_status wan 集群中成员的状态。1=活着,2=离开,3=离开,4=失败。 member, dc
consul_catalog_services 集群中有多少个服务
consul_service_tag 服务的标签 service_id, node, tag
consul_catalog_service_node_healthy 此服务在此节点上是否健康 service_id, node, service_name
consul_health_node_status 与节点关联的健康检查状态 check, node, status
consul_health_service_status 与节点关联的健康检查状态 check, node, service_id, service_name, status
consul_catalog_kv Consul 键/值目录中选定键的值。省略具有非数字值的键 key
consul_service_checks 如果可用,将 Consul 服务 ID 与支票名称相关联 service_id,service_name, check_id, check_name, node

标签

./consul_exporter --help
  • consul.allow_stale:允许任何 Consul 服务器(非领导者)为读取服务。
  • consul.ca-file:用于验证服务器证书真实性的 PEM 编码证书颁发机构的文件路径。
  • consul.cert-file:与私钥一起使用以验证出口商真实性的 PEM 编码证书的文件路径。
  • consul.health-summary:收集有关每个注册服务和出口的信息consul_catalog_service_node_healthy。这需要 n+1 Consul API 查询来收集有关每个服务的所有信息。健康检查信息也可以通过 via 获得consul_health_service_status,但仅适用于配置了健康检查的服务。默认为真。禁止使用–no-consul.heatlh-summary.
  • consul.key-file:与证书一起使用以验证出口商真实性的 PEM 编码私钥的文件路径。
  • consul.insecure:禁用 TLS 主机验证。
  • consul.require_consistent:强制读取完全一致。
  • consul.server:我们应该连接到的 Consul 实例的地址(主机和端口)。这可以是本地代理(localhost:8500例如,)或 Consul 服务器的地址。
  • consul.server-name:如果提供,这将覆盖 TLS 证书的主机名。它可用于确保证书名称与我们声明的主机名相匹配。
  • consul.timeout:对 consul 的 HTTP 请求超时。
  • consul.request-limit:限制consul的最大并发请求数,0表示不限制。
  • log.format:设置日志目标和格式。示例:logger:syslog?appname=bob&local=7 或logger:stdout?json=true
  • log.level:日志记录级别。info默认情况下。
  • web.listen-address:用于侦听 Web 界面和遥测的地址。
  • web.telemetry-path:公开指标的路径。
  • version:显示应用程序版本。

键/值检查

这个导出器支持从 Consul 的 KV 存储中获取键/值对并将它们暴露给 Prometheus。这可能很有用,例如,如果您使用 Consul KV 来存储您想要的集群大小,并希望将该值与通过监控找到的实际值进行对比。

  • kv.filter:仅存储与此正则表达式模式匹配的键。
  • kv.prefix:在其下查找 KV 对的前缀。

必须提供前缀才能激活此功能。/如果要搜索整个键空间,则通过。

环境变量

consul_exporter 支持官方 consul/api 包提供的所有环境变量,包括CONSUL_HTTP_TOKEN设置ACL令牌。

有用的查询

我的服务健康吗?

min(consul_catalog_service_node_healthy) by (service_name)

值 1 表示服务的所有节点都在通过。值为 0 表示服务的至少一个节点未通过。

哪些服务节点出现故障?

sum by (node, service_name)(consul_catalog_service_node_healthy == 0)

哪些服务检查至关重要?

consul_health_service_status{status="critical"} == 1

您可以查询以下健康检查状态:“维护”、“严重”、“警告”或“通过”

使用 Docker

您可以使用 prom/consul-exporter Docker 映像部署此导出器。

例如:

docker pull prom/consul-exporter

docker run -d -p 9107:9107 prom/consul-exporter --consul.server=172.17.0.1:8500

请记住,您的容器需要能够与 Consul 服务器或代理进行通信。使用可从容器访问的 IP 或设置命令的–dns和选项:–dns-searchdocker run

docker run -d -p 9107:9107 --dns=172.17.0.1 --dns-search=service.consul \
        prom/consul-exporter --consul.server=consul:8500

TLS 和基本身份验证

consul_exporter 支持 TLS 和基本身份验证。要使用 TLS 和/或基本身份验证,您需要使用参数传递配置文件–web.config.file。该文件的格式 在 exporter-toolkit 存储库中进行了描述。

作者:Jeebiz  创建时间:2023-02-19 21:07
最后编辑:Jeebiz  更新时间:2024-01-24 21:48