prometheus 通过黑盒方式检查 http 服务需三步:部署 blackbox exporter、配置 http_2xx 探测模块、在 prometheus.yml 中添加 probe 抓取任务;全程模拟用户访问,不依赖被监控端内部状态。

要让 Prometheus 通过黑盒方式检查 HTTP 服务,核心是三步:部署 Blackbox Exporter、配置探测模块、在 Prometheus 中添加对应抓取任务。整个过程不依赖被监控服务内部状态,只模拟真实用户访问行为。
部署并启动 Blackbox Exporter
下载官方二进制包(如 v0.27.0),解压后放在统一目录(例如 /app/blackbox_exporter)。用 systemd 管理服务:
- 创建
/usr/lib/systemd/system/blackbox_exporter.service,关键项为:ExecStart=/app/blackbox_exporter --config.file=/app/blackbox.yml - 执行
systemctl daemon-reload && systemctl start blackbox_exporter && systemctl enable blackbox_exporter - 确认服务运行正常:
curl http://localhost:9115应返回健康页面
编写 blackbox.yml 配置 HTTP 探测模块
在 /app/blackbox.yml 中定义一个支持标准 Web 检查的模块,例如:
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_status_codes: [200, 204]
method: GET
no_follow_redirects: false
fail_if_ssl: false
fail_if_not_ssl: false
这个配置表示:发起 GET 请求,接受 200 或 204 响应码,允许重定向,不强制要求 HTTPS,超时 5 秒。
在 Prometheus 中添加抓取任务
修改 prometheus.yml 的 scrape_configs,新增一项:
- job_name: 'http_status'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://example.com
- http://api.internal:8080
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
说明:
- 所有目标地址通过
__param_target传给 Blackbox Exporter -
replacement指向本地 Blackbox Exporter 实例 - 每个
target会生成独立指标,如probe_success{instance="https://example.com"}
验证与常用指标
重启 Prometheus 后,访问 http://<prometheus-ip>:9090/targets</prometheus-ip> 查看 job 是否 UP。常用查询示例:
-
probe_success == 0:找出当前失败的目标 -
probe_http_status_code{job="http_status"}:查看各站点返回的状态码 -
probe_duration_seconds{job="http_status"} > 2:响应超 2 秒的请求











