歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識(shí)。
Blackbox Exporter 是 Prometheus 官方提供的一種黑盒監(jiān)控解決方案,能夠通過 HTTP、HTTPS、DNS、TCP 和 ICMP 等方式對網(wǎng)絡(luò)進(jìn)行探測。與傳統(tǒng)的白盒監(jiān)控不同,黑盒監(jiān)控更側(cè)重于從外部用戶的視角來測試服務(wù)的可用性及性能,通常以故障為導(dǎo)向,快速發(fā)現(xiàn)服務(wù)的中斷或異常。相比之下,白盒監(jiān)控更強(qiáng)調(diào)主動(dòng)發(fā)現(xiàn)潛在問題,通過監(jiān)控內(nèi)部系統(tǒng)指標(biāo)預(yù)測故障。
一個(gè)完善的監(jiān)控體系需要結(jié)合兩者:從白盒角度洞察潛在問題,從黑盒角度快速定位已發(fā)生的故障。
實(shí)際應(yīng)用
下面以部署和配置 Blackbox Exporter 為例,演示如何實(shí)現(xiàn)端口監(jiān)控和網(wǎng)絡(luò)探測。
1. 部署 Blackbox Exporter
方法一:Docker 運(yùn)行
你可以直接使用官方提供的 Docker 鏡像來快速部署:
docker pull prom/blackbox-exporter
docker run --rm -d -p 9115:9115 --name blackbox_exporter \\
-v $(pwd):/config prom/blackbox-exporter:master \\
--config.file=/config/blackbox.yml
方法二:Docker Compose 部署
利用 docker-compose.yml 配置文件,可以更方便地管理服務(wù)。示例如下:
version: '2'services:
blackbox_exporter:
image: prom/blackbox-exporter
container_name: blackbox_exporter
restart: always
networks:
- nets
volumes:
- ./blackbox_exporter/blackbox.yml:/etc/blackbox_exporter/config.yml
ports:
- 9115:9115networks:
nets:
external: false
將上述內(nèi)容保存為 docker-compose.yml,并運(yùn)行以下命令啟動(dòng):
docker-compose up -d
2. Blackbox Exporter 配置
配置文件 blackbox.yml 定義了探測的模塊和具體方式。以下是一些常用的探測模塊配置示例:
modules:
http_2xx:
prober: http
timeout: 20s
http:
preferred_ip_protocol: "ip4" # 使用 IPv4
http_post_2xx_query:
prober: http
timeout: 20s
http:
preferred_ip_protocol: "ip4"
method: POST
headers:
Content-Type: application/json
body: '{"key":"value"}' # 示例請求體
tcp_connect:
prober: tcp
timeout: 5s
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
icmp:
prober: icmp
timeout: 20s
將該文件放在 Docker 容器掛載的路徑(如 ./blackbox_exporter/blackbox.yml)下,重啟服務(wù)即可生效。
3. Prometheus 配置 Blackbox Exporter
在 Prometheus 的 prometheus.yml 中添加 Blackbox Exporter 的探測任務(wù):
scrape_configs:
- job_name: 'port_status'
metrics_path: /probe
params:
module: [tcp_connect] # 使用 TCP 探測
static_configs:
- targets:
- '192.168.10.1:22' # SSH 服務(wù)
- '192.168.10.2:80' # HTTP 服務(wù)
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 # Blackbox Exporter 的地址
重新加載 Prometheus 配置:
curl -X POST http://<Prometheus地址>:9090/-/reload
4. Grafana 配置
模板導(dǎo)入
Grafana 提供豐富的監(jiān)控模板,你可以直接導(dǎo)入模板 9965(Blackbox Exporter 模板):
前往 Grafana 儀表盤,點(diǎn)擊 導(dǎo)入(Import)。
輸入模板編號(hào) 9965,并選擇對應(yīng)的 Prometheus 數(shù)據(jù)源。
應(yīng)用后即可看到探測數(shù)據(jù)的可視化展示。
常見插件問題
如需安裝插件,可以通過以下命令驗(yàn)證:
grafana-cli plugins ls
如果是 Docker 容器部署 Grafana,需要重啟容器使插件生效:
docker restart grafana
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索。