如何知道 Nginx Ingress Controller 中的请求等待时间?

如何知道 Nginx Ingress Controller 中的请求等待时间?

我们用KubernetesNginx 入口控制器使用各种后端服务运行我们的平台。我们还使用 New Relic(以及 Prometheus、Grafana)作为我们的可观察性仪表板和警报。Nginx Ingress Controller 是我们所有请求的入口点。

当我们不断收到请求时,如果我们的后端服务的所有线程都很忙,那么我假设请求开始排队,并且随着线程/资源开始释放,它们最终得到服务。

目前,我无法找到一个指标来告诉我请求在被 Nginx 接收并最终由我们的后端提供服务之前等待的时间。

Nginx 入口控制器Prometheus 指标包含以下 4 个延迟指标:

  • nginx_ingress_controller_request_duration_seconds(nginx 变量 request_time:)
  • nginx_ingress_controller_response_duration_seconds (nginx 变量upstream_response_time:)
  • nginx_ingress_controller_connect_duration_seconds(nginx 变量 upstream_connect_time:)
  • nginx_ingress_controller_header_duration_seconds(nginx 变量 upstream_header_time:)

在绘制这些指标并尝试各种负载测试时,我发现所有这些指标都给出了请求被 Nginx 接收后的延迟,但它们似乎都没有包括请求在被 Nginx 接收之前的等待时间。

我正在寻找以下问题的答案:

  • 是否upstream_connect_time包括请求的等待时间(在被 Nginx 接收之前)?
  • 以上 4 个指标是否包括请求的等待时间(在被 Nginx 接收之前)?
  • 我发现了一个变量,upstream_queue_time称为ngx_http_upstream_module这里。这个指标是否给出了请求的等待时间(在被 Nginx 接收之前)?如果是,这是否仅适用于 Nginx Plus?我可以使用哪个指标?
  • 还有其他方法可以让我了解请求的等待时间(在被 Nginx 接收之前)吗?

如果我的上述理解不正确,请告诉我。

非常感谢您花时间和专业知识来回答这个问题。非常感谢。

相关内容