使用nginx-module-vts監控各虛擬主機的流量

###1、前言 因爲全部業務只有一個公網IP入口,沒法統計到每一個業務的流量帶寬,好在nginx上經過域名進行業務區分,能夠藉助nginx-module-vts模塊來實現需求。 本文將主要用到如下幾個模塊和工具: nginx-module-vts: Nginx virtual host traffic status module,nginx的監控模塊,可以提供json、html、prometheus格式的數據產出。 nginx-vts-exporter: Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用於收集nginx的監控數據,並給Prometheus提供監控接口,默認端口號9913。 Prometheus: 監控nginx-vts-exporter提供的nginx數據,並存儲在時序數據庫中,可使用PromQL對時序數據進行查詢和聚合。 Grafana: 可視化監控數據展現工具 ###2、安裝nginx-module-vtshtml

  • 下載並編譯ngx-module-vts模塊
shell> git clone git://github.com/vozlt/nginx-module-vts.git
# 編譯nginx時添加監控組件nginx-module-vts,其餘nginx安裝過程的內容詳見《源碼安裝openresty》,這裏不在重複說明。
shell> ./configure --add-module=/usr/local/src/nginx-module-vts
  • 編輯nginx.conf配置文件
# 在 http 和 server 塊中加入以下信息
http {
    vhost_traffic_status_zone;
    ...
    server {
        ...
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}
  • 在瀏覽器輸入 "IP:80/status" 打開監控頁面

###3、安裝nginx-vts-exporter #####注:nginx-module-vts 模塊從0.1.17+版本以後原生支持 prometheus 數據格式,可跳過 nginx-vts-exporter 的安裝。linux

  • 下載安裝
shell> wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
shell> tar zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz -C /opt/prometheus/
  • 啓動服務
shell> /opt/prometheus/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter -nginx.scrape_timeout 10 -nginx.scrape_uri http://{IP}/status/format/json
  • 配置systemd服務
shell> cat > /etc/systemd/system/nginx_vts_exporter.service << EOF
 [Unit]
Description=nginx_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/server/prometheus/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter -nginx.scrape_uri=https://{IP}/status/format/json
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

# 啓動並檢查服務狀態
shell> systemctl start nginx-vts-exporter.service
shell> systemctl status nginx-vts-exporter.service
  • 修改prometheus.yml
# nginx-vts-exporter 默認的抓取地址爲http://{IP}:9913/metrics
vim /server/prometheus/prometheus.yml
  - job_name: nginx
    static_configs:
      - targets: ['10.20.73.71:9913']
        labels:
          instance: 91donkey-web01
  • 重啓prometheus服務
shell> systemctl restart prometheus

###4、配置 grafananginx

  • 導入nginx vts模板 根據採集源的不一樣,選用不一樣的 grafana dashboard 模板 git

  • 訪問 Dashboards github

相關文章
相關標籤/搜索