我有一个 nginx 负载均衡器,它仅将请求代理到几个上游服务器。
现在,我想做的是:
对于十分之一的请求,我想要测量 nginx 的响应时间(以毫秒为单位)并将该值转发到 InfluxDB 度量数据库。
我不确定如何才能实现这一点。我最初的想法是利用“access_by_lua_block”功能,但如果我理解正确的话,这是在将请求发送到上游服务器之前执行的。有没有办法在收到上游服务器的响应后执行 lua 代码?
需要说明的是:我想要的是 nginx 负载均衡器本身的响应时间,而不是上游应用程序服务器的响应时间。我的最终目标是将负载均衡器的响应时间与上游服务器的响应时间进行比较,以确定负载均衡器配置中的潜在瓶颈。
答案1
由于您不确定是否要使用 Lua 路由,您是否考虑过使用带有 Nginx 插件的 New Relic?尤其是使用 Nginx Plus,您可以获得很多想要的东西:https://newrelic.com/plugins/nginx-inc/13
Datadog 具有类似的功能,并明确记录负载均衡器性能:https://www.datadoghq.com/blog/monitor-nginx-plus-load-balancing-metrics/