分布式追踪

分布式追踪是定位微服务链路瓶颈、分析请求路径的关键手段。Envoy 可作为全链路追踪的入口和出口,支持多种主流追踪系统。

分布式追踪原理

  • 通过唯一 Trace ID 标记每个请求,沿调用链透传。
  • 每个服务节点生成 Span,记录处理耗时、元数据等。
  • 追踪系统汇总所有 Span,重建完整调用链。

支持的主流追踪系统

  • Zipkin:开源分布式追踪系统,Envoy 原生支持。
  • Jaeger:CNCF 项目,功能丰富,兼容 OpenTracing。
  • SkyWalking:适合云原生场景,支持多语言探针。
  • Datadog:商业化 APM,支持 Envoy 集成。

追踪头透传与采样配置

  • Envoy 自动识别并透传常见追踪头(如 x-request-id、x-b3-*、traceparent 等)。
  • 支持多种采样策略(全采样、概率采样等)。

配置示例(以 Zipkin 为例)

tracing:
  http:
    name: envoy.tracers.zipkin
    typed_config:
      "@type": type.googleapis.com/envoy.config.trace.v3.ZipkinConfig
      collector_cluster: zipkin
      collector_endpoint: /api/v2/spans
      trace_id_128bit: true
      shared_span_context: false

采样率配置:

http_connection_manager:
  tracing:
    random_sampling:
      value: 100  # 采样率 100/10000 = 1%

工程实践建议

  • 建议全链路统一采样策略,避免链路断裂。
  • 关注 Trace ID 透传,确保跨服务追踪完整。
  • 结合 metrics、logging 形成观测闭环。
  • 合理设置采样率,兼顾成本与可观测性。

分布式追踪是微服务治理的利器,建议在生产环境全链路部署并持续优化。

文章导航

章节内容

这是章节的内容页面。

章节概览