Prometheus黑盒監控
什么是黑盒探針?
- “黑盒監控”:它指在程序外部通過探針的方法模擬訪問,獲取程序的響應指標來監控程序狀態,如請求處理時間、狀態碼等。在實際生產環境中, 往往會將兩種監控方式混合使用,以實現對應用的全方位監控。
項目地址:
https://github.com/prometheus/blackbox_exporter/releases
本篇主要介紹Prometheus如何通過Blackbox_exporter 的探針檢測功能,來實現對應用的外部監控。
一)、Blackbox_exporter 介紹:
- Blackbox exporter使用go語言開發,它支持通過HTTP、HTTPS、DNS、TCP和ICMP的方式來探測目標端點。它的使用方式與其他exporter不太一樣,在Blackbox exporter的內部需要定義好檢查的模塊,如HTTP檢測模塊。Prometheus將目標和模塊名做為URL的參數傳遞給Blackbox exporter,再由exporter 生成對應的探測請求到目標端點,根據返回的請求狀態生成對應的時間序列指標,並傳遞給Prometheus。
- HTTP 測試:
- 定義Request Header 信息(獲取請求消息數據)
- 判斷Http status(http狀態) / Http Respones Header(http 頭部響應) / Http Body 內容(二進制流)
- TCP 測試:
- 業務組件端口狀態監聽
- 應用層協議定義與監聽
- ICMP 測試:
- 主機探活機制
- POST 測試:
- 接口聯通性
- SSL 證書過期時間:
二)、部署Blackbox_exporter
- 2.1 下載解壓包
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.19.0/blackbox_exporter-0.19.0.linux-amd64.tar.gz
tar xf blackbox_exporter-0.19.0.linux-amd64.tar.gz -C /opt
ln -s /opt/blackbox_exporter-0.19.0.linux-amd64 /opt/blackbox_exporter
- 2.2 准備啟動文件
[root@ops blackbox_exporter]#vim /usr/lib/systemd/system/blackbox_exporter.service
//寫入啟動文件
[Unit]
Description=blackbox_exporter Exporter
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/blackbox_exporter/blackbox_exporter --config.file=/opt/blackbox_exporter/blackbox.yml
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=blackbox_exporter
[Install]
WantedBy=default.target
[root@ops blackbox_exporter]#systemctl restart blackbox_exporter.service
[root@ops blackbox_exporter]#systemctl status blackbox_exporter.service
[root@ops blackbox_exporter]#systemctl enable blackbox_exporter.service
[root@ops blackbox_exporter]# ss -lnt //查看端口9115是否啟動
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 16384 [::]:9115 [::]:*
LISTEN 0 16384 [::]:9090 [::]:*
LISTEN 0 16384 [::]:9093 [::]:*
LISTEN 0 16384 [::]:9094 [::]:*
LISTEN 0 80 [::]:3306 [::]:*
- 2.3 瀏覽器URL測試
http://locakhost:9115
三)、配置Prometheus:
#http 配置
- job_name: 'blackbox-http' # 標簽名
metrics_path: /probe
params:
module: [http_2xx]
static_configs: #靜態組
- targets:
- https://www.163.com
- https://www.baidu.com
- http://192.168.117.128:3000
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 #匹配的值
#icmp 配置
- job_name: 'blackbox-icmp'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 192.168.117.128
- 192.168.168.129
labels:
instance: node_status
group: 'node'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: 192.168.117.128:9115
#端口狀態
- job_name: 'blackbox-port'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- 192.168.117.128:3000
labels:
instance: 'port_status'
group: 'tcp'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.117.128:9115
添加完成后重啟prometheus
四)、瀏覽器進行驗證:
http://locakhost:9090/targets
五)、Grafana里進行驗證: