关于 Alauda Distributed Tracing
Alauda Distributed Tracing 记录单个请求在分布式应用中跨多个服务的运行路径。它帮助团队端到端跟踪请求路径,理解跨服务边界的延迟,并在云原生微服务环境中排查故障。
分布式追踪中的关键概念
在现代应用中,单个用户操作通常会触发跨多个服务的工作。Distributed tracing 会关联这些工作单元,从而可以将完整的执行路径作为一个事务进行分析。
trace 表示请求在系统中的端到端路径。每个 trace 包含一个或多个 span。
span 表示一个逻辑工作单元。它记录操作名称、开始时间、持续时间,以及可选的元数据,例如标签和日志。span 可以嵌套,以展示上游和下游操作之间的因果关系。
作为服务所有者,你可以使用 Alauda Distributed Tracing 来对应用进行埋点、理解服务依赖关系、分析延迟,并调查故障。
借助 Alauda Distributed Tracing,你可以:
- 监控分布式事务
- 优化性能和延迟
- 执行根因分析
Alauda Distributed Tracing 可与其他可观测性组件协同工作:
- Alauda Build of OpenTelemetry v2,用于收集、处理并将 telemetry 数据转发到 Jaeger。
- 与 Kiali 集成,用于从 service mesh 控制台打开追踪数据。
功能
Alauda Distributed Tracing 提供以下能力:
- 与 Kiali 集成。当与 Alauda Service Mesh 配置后,你可以直接从 Kiali 控制台打开分布式追踪数据。
- 高可扩展性。Jaeger 后端专为随应用流量和运维增长而水平扩展而设计。
- 分布式上下文传播。Trace 上下文可以跨服务边界传播,从而将相关的 span 连接为完整的端到端 trace。
- Zipkin 兼容性。Jaeger 可以接收 Zipkin 格式的追踪数据,这有助于团队以最小改动从现有 Zipkin 埋点迁移过来。
如需更全面的能力概览,请参阅 功能。
架构
Alauda Distributed Tracing 结合 Jaeger v2、Alauda Build of OpenTelemetry v2 以及 Elasticsearch 或 OpenSearch,在 Kubernetes 上收集、存储和可视化 trace 数据。
主要组件包括:
- Alauda Distributed Tracing (Jaeger):该组件基于 Jaeger v2,提供追踪后端。
- Jaeger Binary:主运行时基于 OpenTelemetry Collector 框架构建,可运行
collector和query等特定角色的部署,以接收、存储、搜索和可视化 trace 数据。 - Jaeger ES Rollover:该组件负责管理 Elasticsearch rollover 资源,例如模板、别名和索引轮转,从而让长期运行的集群能够高效保留追踪数据。
- jaeger-es-index-cleaner:该组件会定期删除早于配置保留期的基于时间的索引。它与 OpenSearch 部署一起使用(以及不使用 ILM 的 Elasticsearch 部署),以强制执行 trace 数据保留策略。
- Jaeger Binary:主运行时基于 OpenTelemetry Collector 框架构建,可运行
- Alauda Build of OpenTelemetry v2:该组件基于开源 OpenTelemetry 项目,提供受支持的发行版,用于接收、处理和导出 telemetry 数据。
- OpenTelemetry Operator:该 Operator 在集群上部署和管理 Jaeger 实例,并协调追踪流水线所需的资源。
- OpenTelemetry Collector:Collector 是一个与厂商无关的组件,可以放在 Jaeger 前面接收 telemetry,对其进行增强或转换,并将其转发到一个或多个后端。它也是 instrumentation 库的常见目标,这些库使用 OTLP 等开放标准导出 telemetry 数据。
- Elasticsearch:Elasticsearch 用于存储 trace 数据,以便进行搜索和分析,并作为 Alauda Distributed Tracing 的后端存储。
- OpenSearch:OpenSearch 是一个由社区驱动的开源搜索与分析套件,也可以作为 Alauda Distributed Tracing 的后端存储。Jaeger 对 OpenSearch 使用与 Elasticsearch 相同的存储实现。
如需更全面的架构概览,请参阅 架构。