nginx 负载平衡 - 仅记录服务器故障?

nginx 负载平衡 - 仅记录服务器故障?

我目前有一个中等规模的集群(15 台服务器),其中 3 个节点运行 nginx 负载平衡和 ip_hash。被平衡的协议连接率非常高,因此我将 max_fails 设置得相当高,以避免误报服务器宕机消息。

有没有办法监控 nginx 何时将服务器标记为离线,以及何时将其标记为重新在线?访问/错误日志非常庞大,我找不到任何特定的错误消息来 grep/解析以找出服务器何时被视为“坏的”。

答案1

我们也尝试为我们的 nginx 执行此操作,最终了解到 NGiNX 会根据每个工作进程保存上游状态,因此,除非您只有一个工作进程,否则很难使用模块进行跟踪。

但是,我们确实注意到,如果您的日志中有上游数据,它将指出 nginx 何时命中多个后端,此日志格式:

log_format  main  '$status:$request_time:$upstream_response_time:$pipe:$body_bytes_sent $connection $remote_addr $host $remote_user [$time_local] "$request" "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $upstream_cache_status';

通常会产生如下的行:

304:0.001:0.001:.:0 26572217 ...

然而,如果两个上游都出现故障,它将开始显示:

304:20.537:10.001, 10.002, 0.534:.:0 26572217 ...

它还会将所有上游放入 $upstream_addr 中,这样您就可以看到哪些上游也出现了故障。

相关内容