如何通过实战演示,将Nginx与nginx-module-vts模块结合,导出符合Prometheus格式的监控数据指标?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1053个文字,预计阅读时间需要5分钟。
由于 `nginx-module-vts` 默认未启用,Prometheus 格式输出需要显式配置 `vhost_traffic_status_format prometheus。该指令必须出现在 `http` 块中。如果仅在 `server` 块中添加或漏写 `format` 参数,Nginx 启动不会报错,但 `/status/format/prometheus` 路径不会注册,导致 404 错误。
实操建议:
- 确认 Nginx 编译时已加载模块:
nginx -V 2>&1 | grep -o nginx-module-vts,无输出说明未编译进内核 - 在
http块顶部(早于任何server)添加:vhost_traffic_status_zone;
vhost_traffic_status_format prometheus;
-
vhost_traffic_status_zone必须存在,否则整个状态模块不生效,连基础/status都 404
如何让 /status/format/prometheus 正确返回指标且不暴露敏感信息
该路径默认返回所有虚拟主机+上游+缓存的全量指标,但 Prometheus 抓取时通常只需核心请求量、状态码、响应时间等,且不应暴露域名、后端地址等敏感字段。直接开放原生输出有风险。
本文共计1053个文字,预计阅读时间需要5分钟。
由于 `nginx-module-vts` 默认未启用,Prometheus 格式输出需要显式配置 `vhost_traffic_status_format prometheus。该指令必须出现在 `http` 块中。如果仅在 `server` 块中添加或漏写 `format` 参数,Nginx 启动不会报错,但 `/status/format/prometheus` 路径不会注册,导致 404 错误。
实操建议:
- 确认 Nginx 编译时已加载模块:
nginx -V 2>&1 | grep -o nginx-module-vts,无输出说明未编译进内核 - 在
http块顶部(早于任何server)添加:vhost_traffic_status_zone;
vhost_traffic_status_format prometheus;
-
vhost_traffic_status_zone必须存在,否则整个状态模块不生效,连基础/status都 404
如何让 /status/format/prometheus 正确返回指标且不暴露敏感信息
该路径默认返回所有虚拟主机+上游+缓存的全量指标,但 Prometheus 抓取时通常只需核心请求量、状态码、响应时间等,且不应暴露域名、后端地址等敏感字段。直接开放原生输出有风险。

