blackbox 探测模块是什么
blackbox_exporter 把「探测」做成可配置的模块:每个模块声明一种探测类型(http、tcp、icmp、dns)与超时、断言等参数,抓取时通过参数指定用哪个模块。它输出的不是被探测对象的业务指标,而是探测行为本身的结果:成功了没有、耗时多少、卡在哪个阶段。这让它成为白盒监控之外的第二视角。
基本信息
| 适用平台 | Prometheus 生态,blackbox_exporter 独立进程 |
|---|---|
| 默认端口 | 9115,路径 /probe 接收探测请求 |
| 可选模块 | http、tcp、icmp、dns、grpc 等 |
| 结果指标 | probe_success、probe_duration_seconds 及分阶段耗时 |
典型使用场景
- 网站可用性:从外部探测域名,校验状态码与页面关键字
- TCP 连通性:探测数据库或中间件端口是否可建立连接
- ICMP 可达性:判断网络层是否通,与 TCP 探测交叉定位
- DNS 解析:验证解析结果是否正确、耗时是否异常
- 证书到期:通过 HTTPS 探测确认证书链有效且未临期
- 多地体验对比:不同探测点探测同一地址,横向比较各区域响应时间
多模块配置与抓取
多模块配置与抓取
modules:
http_2xx: # 基础可用性
prober: http
timeout: 5s
tcp_connect: # 端口连通性
prober: tcp
timeout: 5s
icmp_ping: # 网络层可达
prober: icmp
timeout: 3s
dns_udp: # 解析验证
prober: dns
dns:
query_name: 'example.com'
query_type: 'A'
# 抓取端通过 params 选择模块,并把目标地址经 relabel 传给 exporter关键结果指标
| 指标 | 含义 | 异常读法 |
|---|---|---|
| probe_success | 探测是否成功(1 或 0) | 为 0 说明该次探测失败 |
| probe_duration_seconds | 探测总耗时 | 与历史基线对比更有效 |
| probe_http_status_code | HTTP 响应状态码 | 5xx 与 4xx 的处理优先级不同 |
| probe_dns_lookup_time_seconds | DNS 解析耗时 | 突增通常指向解析服务问题 |
| probe_ssl_earliest_cert_expiry | 证书最早到期时间 | 用于提前安排续期 |
icmp 探测需要额外权限:容器部署要放开底层网络能力,否则模块报权限错误,容易被误判为网络不通。
probe_success 为 0 时先看分段耗时指标(DNS 解析、连接建立、TLS 握手)判断失败环节,这比反复换探测目标更快定位。
探测目标与模块的组合要写进配置而不是手工执行:手工探测只能说明当时状态,只有纳入周期抓取才会形成可用于告警与复盘的时间序列。