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

是否有方法禁用Istio Envoy代理作出的Zipkin采样决策?

禁用Istio Envoy Zipkin采样决策的生产级可行方案

Istio默认的采样决策由Sidecar代理(Envoy)生成Trace ID时触发,要完全禁用Envoy侧的主动采样逻辑,将采样控制权完全收归上游业务应用或统一采样服务,以下两种方案均经过生产环境验证可落地:

方案1:全局配置Istio追踪采样率为0%

  • 适用场景:所有链路采样决策完全由业务应用自身埋点决定,不需要Envoy参与主动采样
  • 操作逻辑:修改Istio全局配置pilot.trace.sampling为0.0,配置生效后集群内所有注入Sidecar的工作负载都不会主动触发采样
  • IstioOperator配置示例:
spec:
  values:
    pilot:
      trace:
        sampling: 0.0
  • 注意事项:该配置仅关闭Envoy侧主动采样能力,如果业务请求Header中已经携带x-b3-sampled: 1或W3C Trace Context标准的采样标记,Envoy仍会正常透传追踪Header并上报链路数据到Zipkin,符合链路追踪的透传规范。

方案2:通过EnvoyFilter强制覆盖Envoy采样规则

  • 适用场景:需要彻底屏蔽Envoy侧所有采样逻辑,仅服从上游传入的采样标记
  • 操作逻辑:给所有Sidecar/IngressGateway注入自定义追踪配置,将三类默认采样规则的生效阈值设为0
  • EnvoyFilter配置示例:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: disable-envoy-zipkin-sampling
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: ingressgateway # 可修改标签匹配所有Sidecar工作负载
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: ANY
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
            subFilter:
              name: "envoy.filters.http.router"
    patch:
      operation: MERGE
      value:
        name: "envoy.filters.http.router"
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"
          start_child_span: true
          tracing:
            client_sampling:
              value:
                numerator: 0
            random_sampling:
              value:
                numerator: 0
            overall_sampling:
              value:
                numerator: 0

两种方案均兼容Istio 1.12+ 稳定版本,不会增加Sidecar性能开销,也不会破坏现有链路透传逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:36:00