Prometheus 監控之 Blackbox_exporter黑盒監測
相關內容原文地址:
CSDN:GeekXuShuo:Prometheus 監控之 Blackbox_exporter黑盒監測 [icmp、tcp、http(get\post)、dns、ssl證書過期時間]
.Anoxia:blackbox_exporter+grafana+prometheus監控主機存活,端口存活及網站狀態
51CTO:鐵血軍人:網絡探測:Blackbox Exporter
1、blackbox_exporter概述
blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的監控數據採集。
1.1 Blackbox_exporter 應用場景
- HTTP 測試
- 定義 Request Header 信息
- 判斷 Http status / Http Respones Header / Http Body 內容
- TCP 測試
- 業務組件端口狀態監聽
- 應用層協議定義與監聽
- ICMP 測試
- 主機探活機制
- POST 測試
- 接口聯通性
- SSL 證書過期時間
2、blackbox_exporter安裝
2.1 Docker方式安裝
docker pull prom/blackbox-exporter
docker run -d -p 9115:9115 --name blackbox-exporter prom/blackbox-exporter
2.2 宿主機安裝
各個版本的blackbox_exporter https://github.com/prometheus/blackbox_exporter/releases
以linux系統爲例,下載編譯好的二進制包,解壓使用:
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.16.0/blackbox_exporter-0.16.0.linux-amd64.tar.gz
tar -zxvf blackbox_exporter-0.16.0.linux-amd64.tar.gz -C /data
mv /data/blackbox_exporter-0.16.0.linux-amd64 /data/blackbox_exporter
驗證是否安裝成功:
# cd /data/blackbox_exporter/
# ./blackbox_exporter --version
啓動:
nohup ./blackbox_exporter &
blackbox_exporter --web.listen-address=:9115 --config.file=blackbox.yml
默認監聽端口爲9115:
# ss -tunlp|grep 9115
tcp LISTEN 0 32768 *:9115 *:* users:(("blackbox_export",29880,3))
3、blackbox_exporter配置
基本的配置:
modules:
http_2xx: # http 監測模塊
prober: http
http:
http_post_2xx: # http post 監測模塊
prober: http
http:
method: POST
tcp_connect: # tcp 監測模塊
prober: tcp
ping: # icmp 檢測模塊
prober: icmp
timeout: 5s
icmp:
preferred_ip_protocol: "ip4"
四、prometheus配置
4.1 ping檢測
在內網可以通過ping (icmp)檢測服務器的存活,以前面的最基本的module配置爲例,在Prometheus的配置文件中配置使用ping module:
- job_name: 'ping_all'
scrape_interval: 1m
metrics_path: /probe
params:
module: [ping]
static_configs:
- targets:
- 192.168.1.2
labels:
instance: node2
- targets:
- 192.168.1.3
labels:
instance: node3
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: 127.0.0.1:9115 # black_exporter 這裏和Prometheus在一臺機器上
通過配置文件可以很直接的看出Prometheus使用black_exporter作爲代理使用black_exporter配置的module檢測各個target的狀態。 下面是一個http://127.0.0.1:9115/probe?module=ping&target=192.168.1.2返回的是192.168.1.2這個target的metrics。
#DNS解析時間,單位 s
probe_dns_lookup_time_seconds 0.039431355
#探測從開始到結束的時間,單位 s,請求這個頁面響應時間
probe_duration_seconds 0.651619323
probe_failed_due_to_regex 0
#HTTP 內容響應的長度
probe_http_content_length -1
#按照階段統計每階段的時間
probe_http_duration_seconds{phase="connect"} 0.050388884 #連接時間
probe_http_duration_seconds{phase="processing"} 0.45868667 #處理請求的時間
probe_http_duration_seconds{phase="resolve"} 0.040037612 #響應時間
probe_http_duration_seconds{phase="tls"} 0.145433254 #校驗證書的時間
probe_http_duration_seconds{phase="transfer"} 0.000566269
#重定向的次數
probe_http_redirects 1
#ssl 指示是否將 SSL 用於最終重定向
probe_http_ssl 1
#返回的狀態碼
probe_http_status_code 200
#未壓縮的響應主體長度
probe_http_uncompressed_body_length 40339
#http 協議的版本
probe_http_version 1.1
#使用的 ip 協議的版本號
probe_ip_protocol 4
probe_ssl_earliest_cert_expiry 1.59732e+09
#是否探測成功
probe_success 1
#TLS 的版本號
probe_tls_version_info{version="TLS 1.2"} 1
4.2 http監測
以前面的最基本的module配置爲例,在Prometheus的配置文件中配置使用http_2xx module:
- job_name: 'http_get_all' # blackbox_export module
scrape_interval: 30s
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://frognew.com
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 所在的機器和端口
http檢測除了可以探測http服務的存活外,還可以根據指標probe_ssl_earliest_cert_expiry進行ssl證書有效期預警。
4.3 監控主機存活狀態
- job_name: node_status
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets: ['10.165.94.31']
labels:
instance: node_status
group: 'node'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: 172.19.155.133:9115
10.165.94.31是被監控端ip,172.19.155.133是Blackbox_exporter
4.4 監控主機端口存活狀態
- job_name: 'prometheus_port_status'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets: ['172.19.155.133:8765']
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: 172.19.155.133:9115
4.5 監控網站狀態
- job_name: web_status
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets: ['http://www.baidu.com']
labels:
instance: user_status
group: 'web'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: 172.19.155.133:9115
5、prometheus告警規則
groups:
- name: example
rules:
- alert: curlHttpStatus
expr: probe_http_status_code{job="blackbox-http"}>=400 and probe_success{job="blackbox-http"}==0
#for: 1m
labels:
docker: number
annotations:
summary: '業務報警: 網站不可訪問'
description: '{{$labels.instance}} 不可訪問,請及時查看,當前狀態碼爲{{$value}}'
6、Grafana
grafana模板號:9965。
此模板需要安裝餅狀圖插件 下載地址 https://grafana.com/grafana/plugins/grafana-piechart-panel
安裝插件,重啓grafana生效。
grafana-cli plugins install grafana-piechart-panel
service grafana-server restart