nginx负载均衡后端健康监控分被动检查(max_fails/fail_timeout)、主动检查(需模块或plus,配置http探针)及日志指标分析;云厂商elb通过控制台/api查healthstatus,并注意网段放行;结合access_log、stub_status和prometheus实现根因定位。

监控负载均衡器的后端健康度,核心是实时掌握每个后端服务器是否能正常响应探测请求。这不单看“通不通”,更要看“响应得对不对、快不快、稳不稳”。方法分三类:内置机制、状态接口、日志与指标分析。
Nginx 负载均衡器的后端健康度监控方式
Nginx 自带被动检查,也支持主动检查(需 Plus 或第三方模块):
- 被动检查靠
max_fails和fail_timeout触发:某台 server 在 10 秒内连续失败 1 次,就被标记为 down,之后暂停转发;超时后会尝试恢复探测。 - 主动检查需额外模块(如
nginx_upstream_check_module)或 Nginx Plus:定时发 HTTP HEAD 请求到/health,校验返回码(如http_2xx)、响应时间(timeout=1000)、连续成功次数(rise=2)和失败阈值(fall=3)。 - 示例配置片段:
upstream backend { server 192.168.1.101:8080; check interval=3000 rise=2 fall=3 timeout=1000 type=http; check_http_send "HEAD /health HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; }
云厂商负载均衡(如华为云、移动云 ELB)的健康状态查询
这类服务通常提供标准 API 和控制台视图:
- 控制台直接查看“后端服务器组”页签下的“健康检查结果”列,显示
up或down。 - 调用 REST API 查询批量健康状态,例如:
GET https://ecloud.10086.cn/api/openapi-vlb/lb-console/acl/v3/member/batchHealthStatus/{poolId}
返回体中每个成员含healthStatus: "up"或"down",以及adminUpState(管理态开关)用于区分是故障还是被手动下线。 - 注意通信网段:独享型需放行 VPC 子网;共享型需放通
100.125.0.0/16和100.126.0.0/16——防火墙或安全组未放行会导致“假异常”。
结合日志与指标做深度判断
仅看 up/down 不足以定位根因,需联动分析:
- 启用
access_log并记录$upstream_addr和$upstream_response_time,筛选出转发到特定后端但响应超时或返回 5xx 的请求。 - 开启
ngx_http_stub_status_module,通过/nginx_status查看总体连接与请求统计,辅助判断是否整体承压。 - 集成 Prometheus:用
nginx-lua-module上报各 upstream 成员的响应时间、错误数、重试次数,Grafana 中绘制热力图或趋势线,提前发现缓慢节点(如 P95 延迟持续上升但尚未 down)。
不复杂但容易忽略











