乌克兰国旗 我们与乌克兰的朋友和同事站在一起。要支持乌克兰度过难关,请访问此页面.

功能

版本  1.62 最新

高可扩展性

Jaeger 后端旨在没有单点故障,并随着业务需求进行扩展。例如,Uber 的任何给定 Jaeger 安装通常每天处理数十亿个跨度。

对 OpenTracing 和 OpenTelemetry 的原生支持

Jaeger 后端、Web UI 和检测库从一开始就被设计为支持 OpenTracing 标准。

从 v1.35 开始,Jaeger 后端可以从 OpenTelemetry SDK 中以其本机 OpenTelemetry 协议 (OTLP)外部链接 - Jaeger 中文 接收跟踪数据。但是,内部数据表示和 UI 仍然遵循 OpenTracing 规范的模型。

多个存储后端

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

现代 Web UI

Jaeger Web UI 是使用 Javascript 使用流行的开源框架(如 React)实现的。在 v1.0 中发布了几个性能改进,以使 UI 能够有效地处理大量数据并显示具有数万个跨度(例如,我们尝试了具有 80,000 个跨度的跟踪)的跟踪。

云原生部署

Jaeger 后端以 Docker 镜像集合的形式分发。二进制文件支持各种配置方法,包括命令行选项、环境变量和多种格式(yaml、toml 等)的配置文件。Kubernetes 运算符外部链接 - Jaeger 中文Helm 图表外部链接 - Jaeger 中文 为部署到 Kubernetes 集群提供帮助。

可观察性

所有 Jaeger 后端组件默认暴露 Prometheusexternal link - Jaeger 中文 指标。日志使用结构化日志库 zapexternal link - Jaeger 中文 写入到标准输出。

与 Zipkin 的向后兼容性

虽然我们建议使用 OpenTelemetry 对应用程序进行 instrumentation,但如果您的组织已经使用 Zipkin 库进行了 instrumentation,则无需重写所有代码。Jaeger 通过 HTTP 接受 Zipkin 格式(Thrift、JSON v1/v2 和 Protobuf)的跨度,从而与 Zipkin 保持向后兼容性。从 Zipkin 后端切换只是将 Zipkin 库的流量路由到 Jaeger 后端的问题。

拓扑图

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

系统架构

架构中所有观测到的服务的“经典”服务依赖关系图。该图仅表示服务之间的一跳依赖关系,类似于从服务网格生成的遥测中可以获得的结果。例如,图 A - B - C 表示存在一些包含 AB 之间网络调用的跟踪,以及一些包含 BC 之间调用的跟踪。但是,它并不意味着存在任何包含完整链 A - B - C 的跟踪,即我们无法断言 A 依赖于 C

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

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

深层依赖关系图

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

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

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

服务性能监控 (SPM)

以 RED(请求、错误、持续时间)指标的形式可视化聚合的跨度数据,以突出显示具有统计显着请求/错误率或延迟的服务和/或操作,然后利用 Jaeger 的跟踪搜索功能来查明属于这些服务/操作的特定跟踪。

有关更多详细信息,请参见 服务性能监控 (SPM)