【Envoy Gateway】可观测:access log / metrics / tracing 能证明什么,默认 client sampling 0%

💡 原文中文,约10700字,阅读约需26分钟。
📝

内容提要

Envoy Gateway v1.9.0的可观测性需注意:access log仅证明单跳请求,metrics中的xds_nack_total仅表示Envoy拒绝更新,tracing默认客户端采样率改为0%,需显式设置clientSamplingFraction。控制面与数据面指标分离,不可混用。各信号对应不同排障维度,避免误判。

🔎

延伸解读

控制面与数据面指标不可混用

控制器 19001 端口暴露的是 watchable 队列、status 写回、xDS 快照等控制面指标,而 Envoy 数据面的 cluster.*、http.* 统计在代理自身的 19001 端口。两套端口刮取来源不同,混用会导致误判:例如控制面指标健康不代表数据面已加载最新配置。排障时应先明确问题属于哪一层,再选择对应指标。

xds_nack_total 的语义边界

v1.9.0 新增的 xds_nack_total 仅表示 Envoy 拒绝了上一份配置更新,按 node ID 和资源类型打标。它不能证明 IR 为空、warming 未完成或 HTTPRoute 未挂载。NACK 升起时代理停留在上一份 known-good 配置,与 IR 未生成 listener 的表象相同但机制相反。告警时应先看 type URL 是 Listener 还是 Cluster,而非直接修改路由。

tracing 默认采样变更的排查陷阱

v1.9.0 将客户端强制采样默认从 100% 改为 0%,因此仅携带强制追踪头(如 x-client-trace-id)的请求不再必然产生 span。若升级后强制追踪失效,应先检查 EnvoyProxy 或 BackendTrafficPolicy 是否显式设置 clientSamplingFraction,而非误判 tracing 已关闭。随机采样路径(samplingRate)仍可能为 100%,所以 Jaeger 中仍有 span 并不能否定强制追踪故障。

access log 的证明范围

数据面 access log 在请求结束时由 Envoy 格式化,能证明这一跳被标成什么(如 route_name),但不能单独证明控制面已将最新 IR 推送到所有代理。v1.9 将 Gateway API 对象身份编入 xDS static metadata,可用于在日志中补充应用侧身份,但当前 resources 仅含主源对象,不包含策略或过滤器,因此日志中出现 HTTPRoute 名不代表 SecurityPolicy 已编译进 HCM。

Q&A

Envoy Gateway v1.9.0 中,access log 能证明什么?

Access log 能证明单跳请求的细节,例如下游地址、请求的 route_name 等,但不能证明控制面已将最新 IR 推送到所有代理,也不能证明 SecurityPolicy 已编译进 HCM。

Envoy Gateway v1.9.0 中,xds_nack_total 指标的含义是什么?

xds_nack_total 表示 Envoy 拒绝了上一份配置更新(即 NACK),按 node ID 和 resource type URL 打标。它只证明数据面拒绝了更新,不证明 IR 为空或 warming 未完成。

Envoy Gateway v1.9.0 中,tracing 默认的 client sampling 是多少?如何启用客户端强制追踪?

v1.9.0 将客户端强制采样(clientSamplingFraction)默认改为 0%,即默认不尊重客户端强制追踪头。要启用,需在 EnvoyProxy.spec.telemetry.tracing 中显式设置 clientSamplingFraction 大于 0。

Envoy Gateway 中,控制面指标和数据面指标有什么区别?

控制面指标(如 watchable_*、xds_nack_total)暴露在控制器 19001 端口,反映控制面状态;数据面指标(如 cluster.*、http.* stats)暴露在 Envoy 的 19001 端口,反映数据面状态。两者不可混用,分别对应不同排障维度。

Envoy Gateway v1.9.0 中,如何判断 tracing 是否真正生效?

仅配置 tracing provider 并设置采样率并不保证 span 一定产生。需注意 clientSamplingFraction 默认 0%,若未显式设置,客户端强制追踪头不会生效。同时,span 存在只说明采样子集请求经过 HCM,不能证明配置完全正确。

Envoy Gateway v1.9.0 中,Gateway API metadata 在 access log 中有什么用途?

Gateway API metadata 被编入 xDS static metadata,可在 access log 中通过 METADATA 或 CEL 补充应用侧身份(如 HTTPRoute 的 kind/name/namespace),也可用于 config_dump 反查 CR。但 v1.9 中 resources 只含主源对象,不包含策略(如 SecurityPolicy)。

🏷️

标签

➡️

继续阅读