Grafana 番外篇1.2–1、使用Grafana、Prometheus、Blackbox監控WebSite效能與健康狀況
網站監控只監控系統的服務狀態是遠遠不足,效能與網站周邊資訊也是可用性的重點
原本正在撰寫k8s 系列的文章,公司突然來一個Proxmox ve + Containerized Web + Proxmox Backup Server + Grafana + Loki + Alert manager + OnCall 的混合雲端微服務Case,然後客戶想要在Grafana上達成的監控效果蠻有意思的,不只要監控服務的可用性,連帶Web的效能、DNS查詢ms、SSL expire都希望一併監控並加入Alert manager,剛好用這個機會分享這層面的監控效果。
本篇以Web效能監控為主,Alert manager會另開文章分享
常常看到網站SSL過期的,這套監控可以強化這方面管理
Blackbox 是什麼?
Blackbox Exporter 是用於Prometheus的一支Exporter,主用在偵測HTTPS、HTTP、TCP、DNS 和 ICMP 等服務。定義好服務後,Blackbox Exporter 會生成Metrics,這些Metrics可提供 Grafana 進行可視化監控。
相同類型的還有一支Whitebox,而Blackbox與Whitebox有什麼差別?
Blackbox相較於Whitebox最大的不同在於,Blackbox是以障礙為出發點,當網站障礙發生時,Blackbox能快速發現故障,而Whitebox則側重於主動發現以及問題的預警 。一個完善的監控目標是要能夠從Whitebox的角度發現潛在問題,然後能夠在Blackbox的角度快速找到發生問題的原因。
Grafana安裝可以參考入門篇1.1 : Grafana Enterprise 安裝 (Ubuntu)
Prometheus安裝可以參考入門篇1.2 : 整合Prometheus監控Proxmox ve
環境 :
Proxmox ve : https://192.168.50.60:8006
Grafana : http://192.168.50.61:3000/login
Prometheus : http://192.168.50.62:9090
Docker Host : 192.168.50.62
Portainer : https://192.168.50.62:9443
K8s Master : 192.168.50.61
K8s Node1 : 192.168.50.63
K6 Host : 192.168.50.64
Blackbox : http://192.168.50.65:9115
Step1. 下載Blackbox Exporter
Blackbox Exporter雖然透過Portainer用container方式佈署很簡單,docker hub上查到的namespace (這邊是用bitnami/blackbox-exporter)安裝就好,但因為安裝完成之後,後續可能會需要頻繁設定blackbox.yml,所以為了便於以後方便擴充,這邊使用一台低規格的vm (CentOS)來安裝。
這邊建議OS安裝完成之後,也要裝Google BBR,BBR安裝方式可參考 :
1.1、blackbox-exporter
先到blackbox-exporter官方網站找最新版的下載(2022/12/20 最新版為 0.23)
cd /
mkdir blackbox
cd blackbox
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
tar -xzf blackbox_exporter-0.23.0.linux-amd64.tar.gz
cd blackbox_exporter-0.23.0.linux-amd64
進到blackbox folder 之後,查看檔案 ls -l
- blackbox_exporter:這是一個運行服務的可執行文件。
- blackbox.yml:YAML 文件,包含您定義要探測的所有端點、要運行模組的所有 backbox exporter 配置。
Step2. 設定Blackbox exporter 執行帳戶
新增一個帳戶專用於執行blackbox exporter!
useradd -rs /bin/false blackbox
chmod -R 777 /blackbox/blackbox_exporter-0.23.0.linux-amd64
chown -R blackbox:blackbox /blackbox/blackbox_exporter-0.23.0.linux-amd64
Step3. 設定Blackbox exporter 服務
把blackbox 設定成一個系統service
nano /etc/systemd/system/blackbox.service
blackbox.service 內容為
[Unit]
Description=Blackbox Exporter Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=blackbox
Group=blackbox
ExecStart=/blackbox/blackbox_exporter-0.23.0.linux-amd64/blackbox_exporter --config.file=/blackbox/blackbox_exporter-0.23.0.linux-amd64/blackbox.yml
[Install]
WantedBy=multi-user.target
接著編輯blackbox.yml
這邊可以看到,default 開啟了幾個探針的模組
- http / tcp / grpc / icmp … 等等
這邊建議在 http 內加一個
preferred_ip_protocol: "ip4"
讓prober 強制用 ipv4 跑,避免掉一些網站同時有ipv4、ipv6 的時候,跑ipv6 會有錯誤的問題。
服務試運行 :
systemctl daemon-reload
systemctl start blackbox.service
systemctl status blackbox.service
然後,別忘了在firewalld 上開port (9115)
firewall-cmd --zone=public --add-port=9115/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all
用browser測試
Step4. 整合blackbox exporter 與 Prometheus
以公司官方網站為例,在blackbox內加入監控
先ssh 到 docker host
ssh 192.168.50.62 22
在prometheus.yml 頁尾的地方加入以下內容
- job_name: web_http2xx_probe
params:
module:
- http_2xx
target:
- www.bearspace.com.tw
metrics_path: /probe
static_configs:
- targets:
- 192.168.50.65:9115
編輯完成後,關閉prometheus,然後cp 進 docker再開啟。
docker cp /tmp/prometheus.yml 154f28014e9d391063ac0321aae82e7e0c6e321b21781e810bc5a6dd429f8582:/etc/prometheus/
打開prometheus web ui 這時在targets的地方,可以看到blackbox 的target
Step5. 整合Grafana與Prometheus的blackbox exporter
進入到Grafana 並在Dashboard → import
這邊推薦兩個Blackbox dashboard
ID : 7587、13659
多網站監控
當要同時監控的網站數量多,不想讓yml 太複雜,可以使用Prometheus 的 Relabling方式簡化設定。
以下為範例 :
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://www.bearspace.com.tw
- https://mnc.bearspace.com.tw
- https://www.datadoghq.com.tw
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.16.50.65:9115