黑盒監控、日誌監控
黑盒監控
對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
- 'target/mtail/*.json'
- files:
[{
"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:
- '/target/prober/http_probe.json'
- soucre_labels: [address]
target_label: __param_target - soucre_labels: [__param_target]
target_label: instance - soucre_labels: address
target_label: prober.example.com:9115
- file:
[{
"targets": [
"http://www.example.com",
"https://www.example.com",
""
]
}]