一聚教程网:一个值得你收藏的教程网站

热门教程

Nginx 安装时如何配置支持集群状态监控与指标收集

时间:2026-08-30 11:18:49 编辑:袖梨 来源:一聚教程网

关键是在编译阶段集成--with-http_stub_status_module和nginx-module-vts模块,配置/metrics等安全限流接口,确保Nginx输出结构化、多维、可被Prometheus稳定采集的监控数据。

安装 Nginx 时要为后续集群状态监控与指标收集打好基础,关键不是“装完再补”,而是在编译或初始化阶段就集成可采集的状态能力。核心是让每台 Nginx 实例能输出结构化、带维度的运行数据,并确保这些数据安全、稳定、可被自动化工具抓取。

编译安装:启用状态模块并推荐 vts

若采用源码编译(推荐用于生产集群),必须显式启用监控所需模块:

  1. 必选:添加 --with-http_stub_status_module,提供基础连接与请求计数(active connections, accepts/handled/requests
  2. 强烈推荐:同时集成 nginx-module-vts,它支持 JSON 接口、按 server_name / upstream / location 多维分组,含响应时间分布、缓存命中率、各状态码明细等——这是 Prometheus 或 Telegraf 能做精准下钻的前提
  3. 编译示例命令:

    ./configure --with-http_stub_status_module --add-module=/path/to/nginx-module-vts --prefix=/usr/local/nginx

    随后执行 make && make install

包管理安装:确认模块可用性并补全 vts

若用 aptyum 安装(如 Ubuntu 的 nginx-full、CentOS 的 nginx-mod-http-stub-status):

  1. 先验证 stub_status 是否内置:nginx -V 2>&1 | grep -o with-http_stub_status_module;若无,需切换为编译安装或启用第三方仓库(如 nginx.org 最新 repo)
  2. vts 模块不包含在标准发行版中,必须单独编译加载:下载对应 Nginx 版本的 vts 源码,通过 --add-dynamic-module 编译为 .so 动态模块,再在 nginx.conf 中用 load_module 加载
  3. 动态模块优势:无需重编译主程序,升级 Nginx 时可保留监控能力

配置状态接口:安全、轻量、可标识

无论用 stub_status 还是 vts,配置 location 是落地关键:

  1. 禁用日志:access_log off; 避免监控请求污染访问日志
  2. 严格限流限源:allow 10.10.0.0/16; + deny all;,仅放行监控采集器所在网段(如 Prometheus Server 或 Telegraf 节点 IP)
  3. 统一路径规范:例如全部使用 location /metrics(vts 的 JSON 接口)或 location /nginx_status(stub_status),便于采集器批量发现
  4. 为节点打标:在 Nginx 配置中通过 env 或注释注明角色(role=lb-edge)、机房(zone=shanghai),后续采集时可通过 relabel 注入 Prometheus 标签

验证与连通性检查

安装配置完成后,立即验证是否满足监控链路起点要求:

  1. 本地测试:curl -s http://localhost/metrics | head -20(vts)或 curl -s http://localhost/nginx_status(stub_status)
  2. 从监控服务器测试:curl -I http://nginx-node-01.example.com/metrics,确认返回 200 OK 且无认证/网络拦截
  3. 检查响应头是否含 Content-Type: application/json(vts)或纯文本(stub_status),这对 exporter 解析至关重要

热门栏目