黑盒監控、日誌監控

立勋發表於2024-05-10

黑盒監控、日誌監控

黑盒監控

對Exporter的使用可以稱為“白盒監控”,即需要把對應的Exporter程式安裝到被監控的目標主機上,從而實現對主機各種資源及其狀態的資料採集工作。但是由於某些情況下操作技術或其他原因,不是所有的Exporter都能部署到被監控的主機環境中,最典型的例子是監控全國網路質量的穩定性,通常的方法是使用ping操作,對選取的節點進行ICMP測試,此時不可能在他人應用環境中部署相關的Exporter程式。針對這樣的應用的場景,Prometheus社群提供了黑盒解決方案,Blackbox Exporter無須安裝在被監控的目標環境中,使用者只需要將其安裝在與Prometheus和被監控目標互通的環境中,透過HTTP、HTTPS、DNS、TCP、ICMP等方式對網路進行探測監控,還可以探測SSL證書過期時間。

1.下載blackbox_exporter
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz

2.解壓縮軟體包到指定的安裝目錄。
tar -zxf blackbox_exporter-0.12.0.linux-amd64.tar.gz
chown -R root:root blackbox_exporter-0.14.0.linux-amd64 # 注意使用個人建立的使用者
ln -sv blackbox_exporter-0.14.0.linux-amd64 blackbox_exporter
cd blackbox_exporter
blackbox_exporter —version
blackbox_exporter --config.file="/etc/prober/prober.yml”
預設埠9115
http://localhost:9115/metric

3.新增blackbox_exporter為系統服務開機啟動。
vim /usr/lib/systemd/system/blackbox_exporter.service
[Unit]
Description=blackbox_exporter
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/data/blackbox_exporter/blackbox_exporter
--config.file "/data/blackbox_exporter/blackbox.yml"
--web.listen-address ":9115"
Restart=on-failure

[Install]
WantedBy=multi-user.target”

配置檔案
vim blackbox.yml
modules:
http_2xx: # 定義模組名稱:http_2xx,自定義符合命名規則即可
prober: http # 定義探測型別:http
http_post_2xx: # 模組為http post功能探測
prober: http
http:
method: POST
tcp_connect: # 模組為tcp功能探測
prober: tcp
……省略部分……
icmp: # 模組為icmp功能探測
prober: icmp

http探測配置
檢查HTTP狀態,可以使用http探測器。它可以生成HTTP請求使用,如GET或POST方法,配置操作中可以,可以使用正規表示式進行相關匹配。首先,我們在blackbox.yml檔案中新增HTTP監測模組,如下所示:

vi blackbox.yml

modules:
http_2xx:
prober: http
timeout: 8s # 定義請求超時時間
http:
valid_status_codes: [] # 接受任何2xx狀態碼
valid_status_codes: [‘200', '205'] # 接受特定狀態碼
method: GET
preferred_ip_protocol: "ip4"
ip_protocol_fallback: false

Blackbox exporter與prometheus整合

  • job_name: 'blackbox_http'
    metrics_path: /probe
    params:
    module: [http_2xx]
    static_configs:
    - targets:
    - www.12306.cn
    - www.baidu.com

基於檔案的服務發現

file_sd_configs:

- file:

- '/target/prober/http_probe.json'

relabel_configs:
    - source_labels: [__address__]
        target_label: __param_target
    - source_labels: [__param_target]
        target_label: instance
    - target_label: __address__
        replacement: localhost:9115

基於檔案的服務發現

vim /target/prober/http_probe.json
[
{
"targets":[
"www.12306.cn",
"www.baidu.com",
"www.taobao.com",
"www.jd.com",
"www.qq.com"
]
}
]

Prometheus是如何與Blackbox Exporter進行關聯整合的?
relabel_configs覆蓋目標的__address__標籤以指定匯出器的主機名,進而簡化了Prometheus任務配置內容。在採集樣本資料之前透過relabel_configs對採集任務進行動態設定過程如下:
1)第一個重新標記(relabel)透過將__address__標籤(即當前目標的地址)寫入__param_target標籤來建立引數。
2)第二個relabel將獲取__param_target的值,並覆寫到instance標籤中。
3)覆寫target例項的__address__標籤值為BlockBox Exporter例項的訪問地址,示例中向192.168.186.7:9115傳送請求獲取例項的metrics資訊。”

日誌監控

使用mtail來監控日誌

安裝mtail
wget https://github.com/google/mtail/releases/download/mtail_3.0.0-rc51_Linux_arm64.tar.gz
tar -zxf mtail_3.0.0-rc51_Linux_arm64.tar.gz
chmod 0755 mtail
cp mtail /usr/local/bin
mtail --version

使用mtail
mkdir /etc/mtail # 建立程式規則目錄,mtail依據規則對日誌進行處理
vim /etc/mtail/line_count.mtail
counter line_count
/$/ {
line_count++
}

mtail語法
https://github.com/google/mtail/wiki/Language

執行mtail
mtail --progs /etc/mtail --logs '/var/log/*.log'

分別指定程式規則和要處理的日誌。多個日誌用","或--logs

預設執行在3903埠

prometheus中部署mtail
scrape_configs:

  • job_name: 'mtail'
    file_sd_config:
    • files:
      • 'target/mtail/*.json'
        refresh_interval: 5m

[{
"targets": [
"web:3903",
"rails:3903"
]
}]

黑盒監控

使用Blackbox exporter實現探針監控。監測網頁狀態碼、應用是否ping通、DNS是否解析等

安裝Blackbox exporter
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz
tar -zxf blackbox_exporter-0.12.0.linux-amd64.tar.gz
cp blackbox_exporter /usr/local/bin
blackbox_exporter --version

配置Blackbox exporter
mkdir /etc/prober
vim /etc/prober/prober.yml
modules:
heep_2xx_check:
prober: http
timeout: 5s
http:
vaild_status_codes: []
# vaild_status_codes: [ '200', '304' ]
method: GET
icmp_check:
prober: icmp
timeout: 5s
icmp:
preferred_ip_protocaol: "ipv4"
dns_examplecom_check:
prober: dns
dns:
preferred_ip_protocol: 'ipv4"
query_name: "www.example.com" # 檢查該域名是否會被解析

啟動Blackbox exporter
blackbox_exporter --config.file="/etc/prober/prober.yml"
預設埠9115
http://localhost:9115/metric

prometheus中部署Blackbox exporter

  • job_name: 'http_probe'
    metrics_path: /probe
    params:
    module: [http_2xx_check]
    file_sd_configs:
    • file:
      • '/target/prober/http_probe.json'
        refresh_interval: 5m
        relabel_configs:
    • soucre_labels: [address]
      target_label: __param_target
    • soucre_labels: [__param_target]
      target_label: instance
    • soucre_labels: address
      target_label: prober.example.com:9115

[{
"targets": [
"http://www.example.com",
"https://www.example.com",
""
]
}]

相關文章