我们的prometheus中提供了来自ingress控制器的以下3个度量,我正在努力了解这些度量之间的差异。
我的理解,
request_duration-在nginx中到达的请求和发送回客户端的响应之间的时间。
ingress_upstream_latency-上游服务器/pod接受请求之前在nginx中等待的时间。
response_duration-从后端容器/pod 获取响应的时间
# HELP nginx_ingress_controller_request_duration_seconds The request processing time in milliseconds
# TYPE nginx_ingress_controller_request_duration_seconds histogram
# HELP nginx_ingress_controller_ingress_upstream_latency_seconds Upstream service latency per Ingress
# TYPE nginx_ingress_controller_ingress_upstream_latency_seconds summary
# HELP nginx_ingress_controller_response_duration_seconds The time spent on receiving the response from the upstream server
# TYPE nginx_ingress_controller_response_duration_seconds histogram
因此,根据上述指标request_duration=ingress_upstream_latency+response_duration
- 当我做一些测试时,我能够看到response_duration大于request_duration,这是怎么可能的,或者通过以上理解是错误的。我试图理解这两个指标nginx_ingress_controller_request_duration_seconds和nginx_incess_controller_response_duration-seconds之间的区别
FYI:nginx_ingress_controller_request_duration_seconds
是request_time
nginx var,它的文档说:
从客户端读取第一个字节到将最后一个字节发送到客户端后的日志写入。
所以这是关于最终客户端访问nginx的总持续时间,即受客户端及其网络的影响。另外两个是关于nginx与上游/后端服务器的通信。
你不能仅仅添加你提到的2个指标来获得request_time
,因为还有其他事情,比如等待客户端。
由于不同的测量方法,upstream_response_time
可以比request_time
大几毫米。
您可以在"暴露的度量"部分找到nginx ingress controller文档中记录的度量。
直接从那里报价:
nginx_ingress_controller_request_duration_seconds直方图\请求处理(从客户端读取第一个字节到将最后一个字节发送到客户端后写入日志之间的时间(时间(以秒为单位((受客户端速度影响(。\nginx var:request_time
nginx_ingress_controller_response_duration_seconds直方图\从上游服务器接收响应所花费的时间(以秒为单位((当响应大于代理缓冲区时,受客户端速度的影响(。\注:由于测量方法不同,可能比nginx_ingress_controller_request_duration_seconds大几毫秒。nginx var:upstream_response_time
nginx_ingress_controller_ingress_upstream_latency_conds摘要\每个入口的上游服务延迟。不推荐使用nginx_ingress_controller_connect_uration_seconds\nginx-var:upstream_connect_time