prom/consul-exporterConsul Exporter用于将Consul的服务健康状态、集群信息、节点状态及键值存储等指标导出至Prometheus,实现对Consul集群的监控与可观测性。
适用于基于Consul进行服务发现与配置管理的环境,需将Consul集群运行状态、服务可用性、节点健康等指标集成到Prometheus监控体系的场景,尤其适合:
bashdocker pull prom/consul-exporter
bashdocker run -d -p 9107:9107 prom/consul-exporter --consul.server=172.17.0.1:8500
当容器需通过域名访问Consul时,可配置DNS参数:
bashdocker run -d -p 9107:9107 \ --dns=172.17.0.1 \ --dns-search=service.consul \ prom/consul-exporter --consul.server=consul:8500
yamlversion: '3' services: consul-exporter: image: prom/consul-exporter container_name: consul-exporter ports: - "9107:9107" command: - --consul.server=consul:8500 - --consul.allow-stale=true - --consul.timeout=10s - --web.telemetry-path=/metrics - --log.level=info environment: - CONSUL_HTTP_TOKEN=your-acl-token-here depends_on: - consul consul: image: consul:latest container_name: consul ports: - "8500:8500" command: agent -server -bootstrap -client=0.0.0.0
| 参数名称 | 描述 |
|---|---|
consul.agent-only | 仅导出本地代理注册的服务指标 |
consul.allow-stale | 允许非领导者Consul服务器处理读请求 |
consul.ca-file | PEM编码的CA证书文件路径,用于验证Consul服务器证书 |
consul.cert-file | PEM编码的客户端证书文件路径,用于身份验证 |
consul.health-summary | 收集服务健康信息并导出consul_catalog_service_node_healthy指标(默认启用,禁用使用--no-consul.health-summary) |
consul.key-file | PEM编码的客户端私钥文件路径,与证书配合使用 |
consul.insecure | 禁用TLS主机名验证 |
consul.require_consistent | 强制读请求使用强一致性模式 |
consul.server | Consul实例地址(格式:host:port),可指向本地代理或服务器 |
consul.server-name | 覆盖TLS证书验证的主机名 |
consul.timeout | Consul HTTP请求超时时间 |
consul.request-limit | 最大并发Consul请求数限制(0表示无限制) |
log.format | 日志格式配置,示例:logger:stdout?json=true |
log.level | 日志级别(默认:info) |
web.listen-address | 监听地址(默认::9107) |
web.telemetry-path | 指标暴露路径(默认:/metrics) |
version | 显示版本信息 |
| 参数名称 | 描述 |
|---|---|
kv.filter | 正则表达式过滤器,仅匹配的键会被导出 |
kv.prefix | KV存储查询前缀(必须指定以启用KV指标采集,/表示整个键空间) |
支持Consul官方consul/api包定义的所有环境变量,主要包括:
| 环境变量 | 描述 |
|---|---|
CONSUL_HTTP_TOKEN | Consul ACL访问令牌 |
CONSUL_HTTP_ADDR | Consul服务地址(默认:127.0.0.1:8500) |
CONSUL_HTTP_SCHEME | 通信协议(http/https,默认:http) |
CONSUL_CACERT | CA证书路径(等同于--consul.ca-file) |
CONSUL_CERT | 客户端证书路径(等同于--consul.cert-file) |
CONSUL_KEY | 客户端私钥路径(等同于--consul.key-file) |
CONSUL_TLS_SERVER_NAME | TLS服务器名称(等同于--consul.server-name) |
CONSUL_HTTP_TIMEOUT | 请求超时时间(等同于--consul.timeout) |
| 指标名称 | 含义 | 标签 |
|---|---|---|
consul_up | 上次Consul查询是否成功 | - |
consul_raft_peers | Raft集群中的服务器节点数量 | - |
consul_serf_lan_members | LAN集群中的成员总数 | - |
consul_serf_lan_member_info | LAN集群成员信息 | member, role, version |
consul_serf_lan_member_status | LAN集群成员状态(1=存活,2=离开中,3=已离开,4=失败) | member |
consul_serf_wan_member_info | WAN集群成员信息 | member, dc, role, version |
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 | 服务节点健康状态(1=健康,0=不健康) | 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 | KV存储中键的数值(非数值键会被忽略) | key |
consul_service_checks | 服务与健康检查的关联信息 | service_id, service_name, check_id, check_name, node |
promqlmin(consul_catalog_service_node_healthy) by (service_name)
说明:值为1表示服务所有节点健康;值为0表示至少一个节点不健康。
promqlsum by (node, service_name)(consul_catalog_service_node_healthy == 0)
promqlconsul_health_service_status{status="critical"} == 1
支持的状态值:maintenance(维护中)、critical(严重)、warning(警告)、passing(正常)
通过--web.config.file参数指定配置文件启用TLS和基本认证,配置文件格式详见exporter-toolkit文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务