如何使用nginx-vts-exporter快速搭建Prometheus监控系统?
【免费下载链接】nginx-vts-exporterSimple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption项目地址: https://gitcode.com/gh_mirrors/ng/nginx-vts-exporter
nginx-vts-exporter是一款轻量级工具,能够抓取Nginx vts模块的统计数据并通过HTTP接口暴露给Prometheus,帮助用户构建完整的Nginx性能监控体系。本文将带你从环境准备到可视化配置,快速掌握这套监控方案的搭建流程。
📋 准备工作:核心依赖与环境要求
搭建Nginx监控系统前,需确保环境中已安装以下组件:
- Nginx:需启用vts模块(
nginx-module-vts) - Prometheus:用于数据收集和存储
- Golang:编译exporter源码时需要(可选)
⚠️ 注意:Nginx必须通过
--add-module=path/to/nginx-module-vts参数编译安装vts模块,否则无法提供统计数据接口。
⚡ 快速安装:三种部署方式任选
1️⃣ 直接下载二进制文件(推荐新手)
从项目Releases页面下载对应系统的可执行文件,解压后即可使用:
# 以Linux系统为例 wget https://github.com/sysulq/nginx-vts-exporter/releases/download/v0.10.7/nginx-vts-exporter-0.10.7.linux-amd64.tar.gz tar zxvf nginx-vts-exporter-0.10.7.linux-amd64.tar.gz cd nginx-vts-exporter-0.10.7.linux-amd642️⃣ Docker容器部署(适合容器化环境)
直接拉取官方镜像并运行,无需手动配置依赖:
docker pull sophos/nginx-vts-exporter:latest docker run -d -p 9913:9913 --name nginx-vts-exporter \ -e NGINX_STATUS="http://nginx-server-ip/status/format/json" \ sophos/nginx-vts-exporter3️⃣ 源码编译(适合开发或定制需求)
克隆仓库后使用make命令编译:
git clone https://gitcode.com/gh_mirrors/ng/nginx-vts-exporter cd nginx-vts-exporter make # 编译产物位于当前目录下的nginx-vts-exporter可执行文件🔧 核心配置:3步完成基础设置
第1步:配置Nginx vts模块
修改Nginx配置文件(通常为nginx.conf),添加vts模块配置:
http { vhost_traffic_status_zone; vhost_traffic_status_filter_by_host on; server { location /status { vhost_traffic_status_display; vhost_traffic_status_display_format json; allow 127.0.0.1; # 限制仅本地访问 deny all; } } }重启Nginx后访问http://localhost/status/format/json,应能看到JSON格式的统计数据。
第2步:启动nginx-vts-exporter
根据安装方式选择对应启动命令:
二进制方式:
nohup ./nginx-vts-exporter -nginx.scrape_uri=http://localhost/status/format/json &Docker方式:
已在安装步骤中包含启动命令,如需自定义参数可添加环境变量:
-e METRICS_ADDR=":9913" \ # 暴露指标的端口 -e METRICS_NS="nginx" \ # 指标命名空间 -e METRICS_ENDPOINT="/metrics" # 指标访问路径第3步:配置Prometheus采集规则
编辑Prometheus配置文件(prometheus.yml),添加如下job:
scrape_configs: - job_name: 'nginx-vts' static_configs: - targets: ['localhost:9913'] # exporter地址重启Prometheus后,访问http://prometheus-ip:9090/targets确认采集目标状态为UP。
📊 数据可视化:Grafana仪表盘配置
项目提供了开箱即用的Grafana仪表盘,位于dashboard/nginx-vts-exporter.json,支持展示以下核心指标:
- 服务器连接数:活跃连接、读写状态、等待连接数
- 请求统计:按状态码(2xx/3xx/4xx/5xx)分类的请求量
- 流量监控:入站/出站流量趋势
- 缓存状态:缓存命中/未命中/过期等状态统计
- 上游服务:后端服务器响应时间、请求分布
导入仪表盘步骤:
- 登录Grafana,进入Dashboards > Import
- 上传
nginx-vts-exporter.json文件或输入Grafana.com仪表盘ID2949 - 选择Prometheus数据源,完成导入
🔍 关键指标解析与实用场景
核心监控指标
| 指标类别 | 指标名称 | 说明 |
|---|---|---|
| 连接状态 | nginx_server_connections | 按状态(active/reading/writing/waiting)统计连接数 |
| 请求统计 | nginx_server_requests | 按HTTP状态码和域名统计请求量 |
| 流量指标 | nginx_server_bytes | 按入站/出站方向统计流量字节数 |
| 缓存性能 | nginx_server_cache | 缓存命中、未命中、过期等状态计数 |
| 上游服务健康 | nginx_upstream_responseMsec | 后端服务器响应时间(毫秒) |
实用监控场景
- 异常检测:5xx状态码突增可能表示后端服务故障
- 性能瓶颈:
waiting状态连接数过高可能意味着Nginx worker进程不足 - 流量分析:结合
host标签识别高流量域名,优化CDN策略 - 缓存优化:通过
cache_miss指标调整缓存策略,提升命中率
⚙️ 高级配置:环境变量与参数说明
exporter支持通过命令行参数或环境变量进行配置,常用参数如下:
| 环境变量 | 对应参数 | 默认值 | 说明 |
|---|---|---|---|
| NGINX_STATUS | -nginx.scrape_uri | http://localhost/status/format/json | Nginx状态页URL |
| METRICS_ADDR | -web.listen-address | :9913 | 指标暴露地址:端口 |
| METRICS_ENDPOINT | -web.telemetry-path | /metrics | 指标访问路径 |
| METRICS_NS | -metrics.namespace | nginx | 指标命名空间前缀 |
示例:自定义端口和命名空间
./nginx-vts-exporter -web.listen-address=":8080" -metrics.namespace="nginx_prod"📝 常见问题与解决方案
Q1: 访问Nginx状态页返回403 Forbidden?
A: 检查Nginx配置中allow规则是否允许exporter所在服务器IP访问,或临时注释deny all测试。
Q2: Prometheus无法采集指标?
A: 验证exporter是否正常运行(curl http://localhost:9913/metrics),检查防火墙是否开放9913端口。
Q3: 仪表盘无数据显示?
A: 确认Prometheus数据源配置正确,检查exporter日志是否有JSON解析错误(通常是Nginx状态页格式问题)。
📌 项目维护说明
根据项目ANN说明,该项目目前不再积极维护,推荐优先使用Nginx vts模块原生支持的Prometheus格式输出(通过vhost_traffic_status_display_format prometheus配置)。如需使用本exporter,建议关注社区fork版本或考虑替代方案。
通过以上步骤,你已成功搭建基于nginx-vts-exporter的Nginx监控系统。结合Prometheus的告警规则和Grafana的可视化能力,可以及时发现和解决Nginx性能问题,保障服务稳定运行。
【免费下载链接】nginx-vts-exporterSimple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption项目地址: https://gitcode.com/gh_mirrors/ng/nginx-vts-exporter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考