乌克兰国旗 我们与我们在乌克兰的朋友和同事站在一起。为在乌克兰需要帮助时支持他们 请访问此页面

功能

版本  1.69 最新 转到最新的 2.x 版本

高可伸缩性

Jaeger 后端被设计为没有单点故障,并能随着业务需求扩展。例如,Uber 的任何 Jaeger 安装通常每天处理数十亿个 Span。

原生支持 OpenTracing 和 OpenTelemetry

Jaeger 后端、Web UI 和插桩库从头开始设计,旨在支持 OpenTracing 标准。

自 v1.35 版本以来,Jaeger 后端可以接收来自 OpenTelemetry SDK 的原生 OpenTelemetry 协议 (OTLP)外部链接 - Jaeger 分布式追踪平台。然而,内部数据表示和 UI 仍然遵循 OpenTracing 规范的模型。

支持多种存储后端

Jaeger 可以与越来越多的存储后端一起使用

现代 Web UI

Jaeger Web UI 使用 React 等流行的开源框架用 Javascript 实现。v1.0 版本发布了一些性能改进,使 UI 能够有效地处理大量数据并显示包含数万个 Span 的 Trace(例如,我们尝试了一个包含 80,000 个 Span 的 Trace)。

云原生部署

Jaeger 后端被分发为一组 Docker 镜像。二进制文件支持各种配置方法,包括命令行选项、环境变量和多种格式(yaml、toml 等)的配置文件。部署到 Kubernetes 集群可通过Kubernetes operator外部链接 - Jaeger 分布式追踪平台Helm chart外部链接 - Jaeger 分布式追踪平台辅助完成。

可观测性

所有 Jaeger 后端组件默认公开 Prometheus外部链接 - Jaeger 分布式追踪平台 指标。日志使用结构化日志库 zap外部链接 - Jaeger 分布式追踪平台 写入 stdout。

向后兼容 Zipkin

尽管我们推荐使用 OpenTelemetry 进行应用插桩,如果您的组织已经投入使用 Zipkin 库进行插桩,您不必重写所有这些代码。Jaeger 通过 HTTP 接受 Zipkin 格式(Thrift, JSON v1/v2 和 Protobuf)的 Span,从而提供与 Zipkin 的向后兼容性。从 Zipkin 后端切换只需将来自 Zipkin 库的流量路由到 Jaeger 后端即可。

拓扑图

Jaeger UI 支持两种类型的服务图:系统架构深度依赖图

系统架构

架构中观察到的所有服务的“经典”服务依赖图。该图仅表示服务之间的一跳依赖关系,类似于可以从服务网格生成的遥测数据中获得的信息。例如,图 A - B - C 意味着存在一些 Trace,其中包含 AB 之间的网络调用,以及一些 Trace,其中包含 BC 之间的调用。然而,这并不意味着存在包含完整链 A - B - C 的任何 Trace,即我们不能说 A 依赖于 C

此图的节点粒度仅限于服务,而非服务终端点。

系统架构图可以从内存存储动态构建,或者在使用分布式存储时通过 Spark 或 Flink 作业构建。

深度依赖图

也称为“传递依赖图”,其中链 A -> B -> C 意味着 AC 具有传递依赖关系。单个图需要一个“焦点”服务(以粉色显示),并且只显示通过该服务的路径。通常,此类图不代表系统的完整架构,除非存在连接到所有内容的某个服务(例如 API 网关),并且该服务被选为焦点服务。

此图的节点粒度可以在服务和服务终端点之间切换。在后一种模式下,同一服务中的不同终端点将显示为独立的节点,例如 A::op1A::op2

目前,传递依赖图只能从搜索结果中的 Trace 构建。将来会有一个 Flink 作业,通过聚合所有 Trace 来计算这些图。

服务性能监控 (SPM)

以 RED(请求 Requests、错误 Errors、持续时间 Duration)指标的形式可视化聚合的 Span 数据,以突出显示具有统计学意义的请求/错误率或延迟的服务和/或操作,然后利用 Jaeger 的 Trace 搜索能力来精确定位属于这些服务/操作的特定 Trace。

请参阅 服务性能监控 (SPM) 了解更多详细信息。