三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

如何使用nginx-vts-exporter快速搭建Prometheus监控系统?

如何使用nginx-vts-exporter快速搭建Prometheus监控系统?

如何使用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-amd64

2️⃣ 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-exporter

3️⃣ 源码编译(适合开发或定制需求)

克隆仓库后使用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)分类的请求量
  • 流量监控:入站/出站流量趋势
  • 缓存状态:缓存命中/未命中/过期等状态统计
  • 上游服务:后端服务器响应时间、请求分布

导入仪表盘步骤:

  1. 登录Grafana,进入Dashboards > Import
  2. 上传nginx-vts-exporter.json文件或输入Grafana.com仪表盘ID2949
  3. 选择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_urihttp://localhost/status/format/jsonNginx状态页URL
METRICS_ADDR-web.listen-address:9913指标暴露地址:端口
METRICS_ENDPOINT-web.telemetry-path/metrics指标访问路径
METRICS_NS-metrics.namespacenginx指标命名空间前缀

示例:自定义端口和命名空间

./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),仅供参考

← 返回列表