Prometheus 如何配置服务状态的主动探测

作者:袖梨 2026-08-28

Prometheus 主动探测服务状态的核心是 Blackbox Exporter:部署后验证其健康页与指标抓取,通过 Kubernetes Probe 资源定义目标、模块(如 http_2xx)和频率,Prometheus 以 /probe?target=xxx&module=yyy 方式抓取 probe_success、probe_duration_seconds 等指标实现可达性、延迟及证书监控。

用 Prometheus 配置服务状态的主动探测,核心是借助 Blackbox Exporter 实现黑盒监控:不看内部指标,只模拟真实用户行为,发请求、连端口、ping 主机,判断“能不能通”“通得快不快”“证书有没有过期”。

部署并验证 Blackbox Exporter

这是整个主动探测的基础组件。它本身不采集数据,而是接收 Prometheus 的指令去探测目标,并把结果暴露为指标。

  1. 在 Kubernetes 中,通常以 Pod 形式部署在 monitoring 命名空间下,监听默认端口 9115
  2. 确认 Service 已正确暴露该端口,且能被 Prometheus 访问(比如通过 ClusterIP 或 headless Service)
  3. 访问 http://<blackbox-ip>:9115,能看到健康页面和 /probe 接口说明
  4. 检查其自身指标是否被 Prometheus 抓取成功,例如查询 up{job="blackbox-exporter"} 应返回 1

定义 Probe 资源(K8s 场景)

在 Kubernetes + Prometheus Operator 环境中,用 Probe 自定义资源描述你要探测什么、怎么探、多久探一次。

  1. spec.targets.staticConfig.targets:填目标地址,如 https://example.comapi.myapp.svc.cluster.local:808010.244.1.5:3306
  2. spec.module:选探测类型,常用有 http_2xx(检查 HTTP 状态码)、tcp_connect(测端口连通性)、icmp(ping)、https_2xx(含证书校验)
  3. spec.interval:设置探测频率,如 30s2m
  4. spec.prober.url:指向 Blackbox Exporter 的地址,格式为 http://blackbox-exporter.monitoring.svc:9115

配置 Prometheus 抓取逻辑

Prometheus 需要知道去哪里拉取 Probe 执行后的结果。Operator 会自动将 Probe 转为正确的 scrape 配置,但需确保:

  1. 对应 ServiceMonitorPrometheusRule 已关联到当前 Prometheus 实例
  2. 抓取路径为 /probe?target=xxx&module=yyy,Prometheus 会把 target 和 module 作为参数传给 Blackbox
  3. relabel_configs 可用于统一打标,例如添加 env="prod"team="backend",方便后续聚合与告警

验证与使用关键指标

探测启动后,Prometheus 会生成一批以 probe_ 开头的指标,最常用的是:

  1. probe_success:1 表示探测成功,0 表示失败(如超时、连接拒绝、HTTP 非 2xx)
  2. probe_duration_seconds:整个探测耗时,可用于性能趋势分析
  3. probe_http_status_code:HTTP 探测返回的状态码
  4. probe_ssl_earliest_cert_expiry:HTTPS 探测中最早即将过期的证书时间戳(单位秒)

把这些指标写进 Grafana 面板或 Alertmanager 告警规则里,就能实现服务可达性、响应延迟、证书有效期等维度的主动监控。

相关文章

精彩推荐