1. 创建配置文件目录
mkdir -p ~/docker/blackbox/config
cd ~/docker/blackbox
2. 创建 Blackbox Exporter 配置文件 config/blackbox.yml
modules:
http_2xx: # HTTP 可用性检测(响应 2xx/3xx 状态码)
prober: http
http:
valid_http_versions: ["HTTP/1.1", "HTTP/2"]
method: GET
preferred_ip_protocol: "ip4"
tls_config:
insecure_skip_verify: true # 忽略证书验证(可选)
tcp_connect: # TCP 端口连通性检测
prober: tcp
icmp: # ICMP Ping 检测
prober: icmp
timeout: 5s
icmp:
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: /probe
params:
module: [http_2xx] # 使用配置文件中的模块名
static_configs:
- targets:
- https://example.com # 要监控的目标 URL
- https://google.com
relabel_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:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- monitor-net
blackbox_exporter:
image: prom/blackbox-exporter:latest
ports:
- "9115:9115"
volumes:
- ./config/blackbox.yml:/config/blackbox.yml
command:
- --config.file=/config/blackbox.yml
networks:
- monitor-net
networks:
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/