You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Envoy访问日志%DURATION%与上游服务时长数值一致及微秒输出咨询

Envoy访问日志时长字段异常问题解答

两个时长字段取值相同的原因及遗漏配置

  • 字段基础定义
    • %DURATION%:Envoy侧统计的请求全链路时长,计时起点为Envoy接收到客户端请求第一个字节,终点为Envoy向客户端发送完响应最后一个字节,默认单位为毫秒。
    • %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%:读取响应头中X-Envoy-Upstream-Service-Time字段的取值,该字段默认需要上游服务或者上游侧Envoy主动注入,默认单位为毫秒。
  • 取值相同的常见原因
    1. 未配置Envoy主动注入X-Envoy-Upstream-Service-Time响应头:如果上游服务本身没有返回该头,同时当前Envoy未配置主动注入规则,该字段会默认填充和%DURATION%一致的取值。
    2. 精度限制:默认毫秒级精度下,Envoy自身的请求转发、处理耗时通常在1毫秒以内,四舍五入后两个字段的取值就会完全一致,无法体现差异。
  • 遗漏配置补充
    需要在对应路由规则中添加响应头注入配置,示例如下:
route:
  cluster: your_upstream_cluster
  response_headers_to_add:
  - append: false
    header:
      key: "X-Envoy-Upstream-Service-Time"
      value: "%UPSTREAM_SERVICE_TIME%"

如果是多Envoy部署架构,需要确保上游侧的Envoy也开启了该头的注入配置。

微秒级时长输出配置

Envoy 1.18及以上版本原生支持微秒级时长输出,修改访问日志配置即可:

  • 全链路总耗时改用%DURATION_USEC%字段,可直接输出微秒级的总时长数值。
  • 上游处理时长需要先在HttpConnectionManager配置中添加upstream_service_time_format: MICROSECONDS配置项,将X-Envoy-Upstream-Service-Time的单位改为微秒,再通过%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%读取即可。

调整后两个字段的精度都达到微秒级,即可清晰观测到Envoy自身处理耗时带来的数值差异。


内容的提问来源于stack exchange,提问作者JME

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:45:04