1. 创建配置文件目录
mkdir -p ~/docker/blackbox/config
cd ~/docker/blackbox
2. 创建 Blackbox Exporter 配置文件 config/blackbox.yml
modules:http_2xx: # HTTP 可用性检测(响应 2xx/3xx 状态码)prober: httphttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]method: GETpreferred_ip_protocol: "ip4"tls_config:insecure_skip_verify: true # 忽略证书验证(可选)tcp_connect: # TCP 端口连通性检测prober: tcpicmp: # ICMP Ping 检测prober: icmptimeout: 5sicmp:preferred_ip_protocol: "ip4"
3. 启动 Blackbox Exporter 容器
docker run -d \--name blackbox_exporter \-p 9115:9115 \-v ~/docker/blackbox/config:/config \prom/blackbox-exporter:latest \--config.file=/config/blackbox.yml
-
验证访问:浏览器打开
http://服务器IP:9115
或执行curl http://localhost:9115/metrics
4. 配置 Prometheus 抓取规则
修改 Prometheus 的 prometheus.yml
,添加以下配置:
scrape_configs:- job_name: "blackbox"metrics_path: /probeparams:module: [http_2xx] # 使用配置文件中的模块名static_configs:- targets:- https://example.com # 要监控的目标 URL- https://google.comrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: blackbox_exporter:9115 # Blackbox 容器地址(同网络下用容器名)# 可选:监控 Blackbox Exporter 自身状态- job_name: "blackbox-exporter"static_configs:- targets: ["blackbox_exporter:9115"]
5. 重启 Prometheus 容器
确保 Prometheus 与 Blackbox Exporter 在 同一 Docker 网络 中:
# 创建共享网络(如果尚未创建)
docker network create monitor-net# 将 Blackbox 加入网络
docker network connect monitor-net blackbox_exporter# 重启 Prometheus(假设已存在)
docker restart prometheus
6. 验证数据
-
访问 Prometheus Web UI(
http://服务器IP:9090
) -
执行查询:
probe_success{job="blackbox"}
-
结果
1
表示探测成功,0
表示失败。
-
完整 Docker Compose 示例(可选)
创建 docker-compose.yml
:
version: '3'
services:prometheus:image: prom/prometheus:latestports:- "9090:9090"volumes:- ./prometheus.yml:/etc/prometheus/prometheus.ymlnetworks:- monitor-netblackbox_exporter:image: prom/blackbox-exporter:latestports:- "9115:9115"volumes:- ./config/blackbox.yml:/config/blackbox.ymlcommand:- --config.file=/config/blackbox.ymlnetworks:- monitor-netnetworks:monitor-net:driver: bridge
常见问题排查
-
Prometheus 无法访问 Blackbox
-
确保两者在同一 Docker 网络,使用
docker network inspect monitor-net
检查。
-
-
探测失败
-
检查
blackbox.yml
中的模块配置(如http_2xx
是否匹配目标)。 -
查看 Blackbox 日志:
docker logs blackbox_exporter
-
-
Relabel 配置错误
-
确认
relabel_configs
中的replacement
指向正确的 Blackbox 地址。
-
通过以上步骤,Blackbox Exporter 会通过 HTTP/HTTPS、TCP、ICMP 探测目标,并将结果反馈给 Prometheus。
Blackbox Exporter 模版
https://grafana.com/grafana/dashboards/13659-blackbox-exporter-http-prober/