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/