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 應用場景

  1. HTTP 測試
  • 定義 Request Header 信息
  • 判斷 Http status / Http Respones Header / Http Body 內容
  1. TCP 測試
  • 業務組件端口狀態監聽
  • 應用層協議定義與監聽
  1. ICMP 測試
  • 主機探活機制
  1. POST 測試
  • 接口聯通性
  1. 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

6.1 訪問grafana

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章