使用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: 可视化监控数据展示工具

二、安装nginx-module-vts#

  • 下载并编译ngx-module-vts模块
Copy
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配置文件
Copy
# 在 http 和 server 块中加入如下信息 http { vhost_traffic_status_zone; ... server { ... location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } }
  • 在浏览器输入 "IP:80/status" 打开监控页面

三、安装nginx-vts-exporter#

注:nginx-module-vts 模块从0.1.17+版本之后原生支持 prometheus 数据格式,可跳过 nginx-vts-exporter 的安装。
  • 下载安装
Copy
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/
  • 启动服务
Copy
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服务
Copy
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
Copy
# 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服务
Copy
shell> systemctl restart prometheus

四、配置 grafana#

  • 导入nginx vts模板
    根据采集源的不同,选用不同的 grafana dashboard 模板

  • 访问 Dashboards

posted @   龍龍小宝  阅读(4126)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示
CONTENTS