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

一、概述

由於所有業務只有一個公網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: 可視化監控數據展示工具

 

二、基於docker方式部署

由於yum安裝的nginx,默認是沒有nginx-module-vts模塊的。需要下載對應的nginx源碼,進行重新編譯才行。

爲了快速演示,dockerhub已經有鏡像了,包括nginx和nginx-module-vts模塊

https://hub.docker.com/r/gaciaga/nginx-vts

 

環境介紹

本文采用一臺服務器,來演示。

 

操作系統:centos 7.6

docker版本:19.03.8

ip地址:192.168.31.150

容器列表:prometheus,grafana,nginx-vts,nginx-vts-exporter

 

關於基於docker方式搭建prometheus+grafana,請參考鏈接:

https://www.cnblogs.com/xiao987334176/p/9930517.html

 

nginx-vts

nginx的監控模塊,能夠提供json、html、prometheus格式的數據產出。

 

下載鏡像

docker pull gaciaga/nginx-vts

 

運行鏡像

docker run -d -it -p 80:80 gaciaga/nginx-vts:latest

注意:此鏡像,默認已經開啓了status

 

訪問status頁面

http://192.168.31.150/status

效果如下:

 

 

nginx-vts-exporter

主要用於收集nginx的監控數據,並給Prometheus提供監控接口,默認端口號9913。

 

下載鏡像

docker pull sophos/nginx-vts-exporter

 

運行鏡像

docker run -d -it -e NGINX_STATUS="http://192.168.31.150/status/format/json" -p 9913:9913 sophos/nginx-vts-exporter

注意:請根據實際情況修改NGINX_STATUS變量,確保能正常訪問。

 

訪問metrics

http://192.168.31.150:9913/metrics

效果如下:

 

 

三、Prometheus配置

修改prometheus.yml,最後一行添加

  - job_name: nginx-vts
    static_configs:
      - targets: ['192.168.31.150:9913']
        labels:
          instance: localhost

 

重啓prometheus

docker restart prometheus

 

查看targets

http://192.168.31.150:9090/targets

效果如下:

 

 確保狀態爲UP

 

四、Grafana配置

導入nginx vts模板

訪問地址

https://grafana.com/grafana/dashboards/2949/revisions

點擊Download,下載json文件

 

導入json文件

 

 

 效果如下:

 

 

 

本文參考鏈接:

https://www.cnblogs.com/91donkey/p/11643558.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章