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