nginx可通过stub_status模块或nginx-module-vts暴露实时状态,配合prometheus/zabbix等工具监控连接数、请求速率等指标;stub_status返回active connections、accepts、handled、requests及reading/writing/waiting字段,vts模块则提供按server/upstream维度的json指标并支持对接prometheus告警。

可以通过 Nginx 自带的 stub_status 模块或第三方模块(如 nginx-module-vts)暴露实时状态数据,再结合 Prometheus、Zabbix 或自定义脚本采集分析,实现对连接数、请求速率、响应状态等关键指标的持续监控。
启用并配置 stub_status 模块
Nginx 默认编译时通常已包含 ngx_http_stub_status_module,只需在 server 或 location 块中启用:
- 在配置中添加如下内容(建议限制访问 IP,避免信息泄露):
stub_status on;
allow 127.0.0.1;
allow 10.0.0.0/24;
deny all;
}
- 重载 Nginx 配置:
nginx -s reload - 访问
http://your-nginx-server/nginx-status,返回类似:
server accepts handled requests
123456 123456 234567
Reading: 0 Writing: 1 Waiting: 1
其中:Active connections 是当前活跃连接数;accepts 是接受的总连接数;handled 是成功处理的连接数;requests 是总请求数;Reading/Writing/Waiting 分别表示正在读取请求头、向客户端写响应、等待请求的连接数。
使用 nginx-module-vts 获取更细粒度指标
nginx-module-vts(Virtual Host Traffic Status)提供按 server、upstream、location 等维度的统计,支持 JSON 和 HTML 页面输出,更适合生产环境监控:
- 需重新编译 Nginx 并加载该模块,或使用预编译包(如 OpenResty)
- 配置示例:
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
访问 /status 可查看可视化页面,/status/format/json 返回结构化 JSON,便于程序解析。关键字段包括:每秒请求数(request_counter)、响应状态码分布(response_codes)、上游健康状态(upstream)等。
对接 Prometheus 实现自动化告警
借助 nginx-vts-exporter(专为 vts 模块设计的 exporter),可将 Nginx 指标转换为 Prometheus 格式:
- 启动 exporter 并指向 Nginx 的
/status/format/json接口 - 在 Prometheus 中配置 job 抓取该 exporter 的
/metrics端点 - 常用告警规则示例:
expr: sum(rate(nginx_vhost_response_codes_total{code=~"5.."}[5m])) / sum(rate(nginx_vhost_response_codes_total[5m])) > 0.05
for: 2m
labels:
severity: warning
还可监控 nginx_upstream_health_check_failures 判断后端节点是否异常,或用 nginx_connections_active 结合阈值触发扩容预警。
日常巡检与快速诊断技巧
不依赖外部系统时,也可通过简单命令快速判断问题:
- 用 curl 查看基础状态:
curl -s http://localhost/nginx-status | awk 'NR==3 {print $3 "/" $2}'输出“handled/accepts”比值,接近 1 表示连接处理正常 - 观察
Waiting值持续偏高(远大于并发请求数),可能说明 worker 进程不足或存在慢请求阻塞 - 配合
netstat -ant | grep :80 | wc -l对比Active connections,确认是否存在连接堆积 - 定期检查
log_format中的$request_time和$upstream_response_time,识别慢请求源头
不复杂但容易忽略。











