如何通过Envoy指标测量外部客户端到服务的端到端响应延迟?
解决方案:获取Ingress Gateway端到端总延迟
要获取从外部请求到达Ingress Gateway到网关发送完响应最后一字节的总延迟,直接使用Ingress Gateway的下游延迟指标即可,具体说明如下:
术语对应关系确认
根据Envoy的定义:
Downstream:连接到Envoy、发送请求并接收响应的主机
Upstream:从Envoy接收连接和请求、返回响应的主机
在你的场景中:
- 外部客户端是Ingress Gateway的下游(客户端主动连接Ingress,发送请求并接收响应)
- Ingress Gateway的上游是服务的Envoy Sidecar(Ingress向Sidecar转发请求,接收Sidecar返回的响应)
具体指标选择
直接使用Ingress Gateway暴露的downstream_rq_time指标:
- 这个指标的统计范围是:从Ingress Gateway接收到外部请求的第一个字节开始,到Ingress Gateway发送完响应的最后一个字节结束的总时长。
- 它自动包含了所有中间环节的耗时:Ingress转发请求到Sidecar、Sidecar转发到HTTP服务、服务处理、响应原路返回Ingress的全部时间,完全符合你需要测量的“从请求到达Ingress到返回最后一字节”的总延迟。
注意事项
- 不需要区分外部/内部指标:
downstream_rq_time本身就是Ingress针对下游(外部客户端)的请求统计,天然对应外部请求的延迟。 - 无需使用Sidecar的指标:你的需求聚焦在Ingress Gateway的入口到出口的总延迟,Sidecar的指标仅用于测量服务网格内部的环节耗时,不是你需要的端到端总延迟。
内容的提问来源于stack exchange,提问作者hitchhiker
相关产品推荐
相关产品推荐

