nginx 如何获取后端的web服务器的状态?

nginx 如何获取后端的web服务器的状态?

HAProxy 有一个非常好的状态页面,向我显示后端哪些 Web 服务器处于启动状态,哪些处于关闭状态。我正在尝试调试一些问题,需要知道 nginx 认为哪些服务器处于启动状态,哪些服务器处于关闭状态。是否有一个网页或其他可以为 nginx 配置的东西,以便我在需要此类信息时只需点击一个 URL 即可?

谢谢,Dean

答案1

您可能需要查看以下几个模块:

答案2

不幸的是,这几乎是不可能的。vanila nginx 在设计上没有上游的全局状态,因此这些信息对于每个工作进程来说都是本地的。

看看这个模块似乎对你有用http://wiki.nginx.org/NginxHttpHealthcheckModule

答案3

虽然这个回复晚了一年,但是 nginx 的 ustats 模块看起来相当令人印象深刻:

https://code.google.com/p/ustats/

移至 githubhttps://github.com/0xc0dec/ustats

不幸的是,1.2 之后似乎没有维护,但可能仍然有效。

找到一个维护良好的叉子https://github.com/nginx-modules/ngx_ustats_module

1.7.2 补丁仍可完美兼容 1.7.4

答案4

我正在寻找 Amazon ELB 提供的简单健康检查。能够在 LB 中添加实例,并具有健康检查机制来删除故障实例。

这就是我的选择。

  1. https://github.com/yaoweibin/nginx_upstream_check_module
  2. https://github.com/openresty/lua-resty-upstream-healthcheck
  3. Nginx 还免费提供被动健康检查。它完全符合我的要求,没有花哨的监控、没有权重、没有花哨的路由检查。它会 ping 服务器并检查 200 状态响应。它会以循环方式执行。

    fail_timeout 参数设置了在指定次数的尝试失败后仍认为服务器不可用的时间。换句话说,服务器在 fail_timeout 设置的时间间隔内不可用。

    max_fails 参数设置在指定时间内应发生的失败尝试次数,仍认为服务器不可用。

    例如:

    upstream search { server 192.168.215.43:9200 max_fails=3 fail_timeout=10s; server 192.168.171.66:9200 max_fails=3 fail_timeout=10s; }

相关内容