prometheus監控nginx
基於prometheus監控nginx實戰
基於prometheus監控nginx實戰安裝準備
-
nginx伺服器:172.22.3.164: 參考:centos7.8安裝nginx-1.19.6
-
prometheus主機已安裝prometheus和grafnana : 參考:centos7.8安裝prometheus和grafana實戰
基於prometheus監控nginx可選兩個exporter,一個是通過nginx_exporter主要是獲取nginx-status中的內建的指標,nginx自身提供status資訊,較為簡單,promethues中對應的metrics也較少。另外一個是可以通過nginx-vts-exporter監控更多的指標,但nginx-vts-exporter依賴在編譯nginx的時候新增nginx-module-vts模組來實現。vts提供了訪問虛擬主機狀態的資訊,包含server,upstream以及cache的當前狀態,顯然指標會更豐富一些。本實踐主要是介紹基於prometheus使用nginx-vts-exporter對nginx進行監控。
-
相關安裝檔案
https://github.com/vozlt/nginx-module-vts/archive/v0.1.18.tar.gz
https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
-
nginx新增nginx-module-vts支援
# cd /opt/nginx-1.19.6
# wget https://github.com/vozlt/nginx-module-vts/archive/v0.1.18.tar.gz
# tar -zxf v0.1.18.tar.gz
## 重新編譯
# ./configure --add-module=nginx-module-vts-0.1.18/
# make
# cp objs/nginx /usr/local/nginx/sbin/nginx
-
修改nginx.conf
http { vhost_traffic_status_zone; vhost_traffic_status_filter_by_host on; server { listen 10011; server_name localhost; # vhost_traffic_status off; location /nginx_status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } }
-
重啟nginx後,訪問http://172.22.3.164:10011/stub_status
安裝nginx-vts-exporter
-
在nginx伺服器安裝nginx-vts-exporter
# cd /opt/
# wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
# tar -zxf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
# cp nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter /usr/local/bin
-
建立service
## 建立service
# vi /usr/lib/systemd/system/nginx-vts-exporter.service
[Unit]
Description=nginx-vts-exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/nginx-vts-exporter \
-nginx.scrape_timeout 10 \
-nginx.scrape_uri http://127.0.0.1:10011/nginx_status/format/json
Restart=on-failure
[Install]
WantedBy=multi-user.target
-
設定自動啟動
# systemctl daemon-reload
## 設定自啟動
# systemctl enable nginx-vts-exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx-vts-exporter.service to /usr/lib/systemd/system/nginx-vts-exporter.service.
配置nginx-vts-exporter監控
-
修改prometheus配置檔案prometheus.yml,在scrape_configs下增加如下配置
- job_name: 'nginx-hosts'
file_sd_configs:
- files: ['/opt/prometheus/sd_config/nginx-hosts.yml']
refresh_interval: 5s
-
新增/opt/prometheus/sd_config/docker-hosts.yml檔案,內容如下
cat /opt/prometheus/sd_config/nginx-hosts.yml
- targets:
- 172.22.3.164:9913
-
重啟prometheus
# systemctl restart prometheus
瀏覽器位址列輸入 http://172.22.3.148:9090/targets
可以看到targets已經增加了對服務nginx-hosts的監控
-
在grafana中配置面板顯示對主機nginx-hosts監控內容
點“+”按鈕,彈出匯入面板視窗
如圖輸入2949,點Load,grafana會直接從官方網站匯入編號為2949的面板如下
選擇資料來源Prometheus,繼續“Import”,顯示nginx監控介面顯示如下