监控 Nginx 负载均衡需关注后端健康状态、请求分发质量与连接负载,可通过日志解析(启用 $upstream_response_time 等变量)、stub_status 模块查看连接概览、nginx_upstream_check_module 主动健康检查,以及 Prometheus+Grafana 实现可视化告警闭环。

监控 Nginx 负载均衡运行,关键在于掌握后端节点健康状态、请求分发质量与整体连接负载。开源版 Nginx 无需商业插件,就能通过日志、状态页和扩展模块实现有效可观测性。
解析访问日志获取实时响应指标
Nginx 默认不输出后端耗时等关键字段,需主动在 log_format 中启用 upstream 相关变量:
- 添加
$upstream_response_time:记录每个请求在后端的真实处理时间(单位秒,精度到毫秒,如0.042) - 添加
$upstream_addr:明确每次转发的目标 IP 和端口,便于按节点归因 - 添加
$upstream_status:捕获后端返回的状态码(如200、502、504),识别错误类型
配置示例:
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $upstream_response_time $upstream_addr $upstream_status';后续可用 awk 统计各节点 P95 延迟、错误率,或接入 nginxlog-exporter + Prometheus 实现自动聚合与告警。
启用 stub_status 查看连接与分发概览
该模块无需额外编译(主流发行版默认启用),提供轻量级运行快照:
-
Active connections:当前活跃连接总数,反映瞬时压力 -
Reading/Writing/Waiting:三类连接分布,Waiting高说明请求排队多,可能后端瓶颈或 keepalive 不足 - 结合日志中
$upstream_addr,可人工比对各节点被调用频次,判断是否出现流量倾斜
配置示例(限制仅内网访问):
location /nginx_status {stub_status on;
access_log off;
allow 10.0.0.0/8;
deny all;
}
配置主动健康检查避免“假存活”
仅靠被动日志无法提前发现响应慢、返回非 2xx 的节点。推荐使用开源模块 nginx_upstream_check_module(OpenResty 默认集成):
- 定期向每个后端发送 HTTP 探针(如
/health),超时或非 2xx 即标记为 down - 参数
rise=2表示连续 2 次成功才恢复上线,fall=3表示连续 3 次失败才下线,避免误判 - 配合
check_http_send和check_http_expect_alive可自定义探测内容与期望响应
配置片段:
upstream app {server 10.0.1.10:8080;
server 10.0.1.11:8080;
check interval=3 rise=2 fall=3 timeout=1 type=http;
}
对接 Prometheus + Grafana 构建可视化闭环
单靠命令行分析难以持续跟踪趋势。推荐组合方案:
- 用
nginx-vts-module或nginx-lua-prometheus暴露 metrics 接口(如/metrics) - Prometheus 定期抓取,采集指标包括:
nginx_upstream_request_total、nginx_upstream_response_milliseconds、nginx_upstream_healthcheck_failures_total - Grafana 中建立看板:按节点展示延迟热力图、错误率折线、健康状态开关灯
该闭环能及时发现异常波动,并支持设置响应时间 >1s 或错误率 >1% 等阈值告警。


















