功能

高可扩展性

Jaeger backend 的设计目标是避免单点故障,并能够随着业务需求扩展。

云原生

Jaeger backend 以容器镜像或原始二进制文件的形式分发,可用于多个平台。二进制文件的行为可通过 YAML 配置文件进行自定义。借助 Alauda Build of OpenTelemetry v2 operator,可协助将其部署到 Kubernetes 集群。

OpenTelemetry

Jaeger 可以接收标准 OpenTelemetry Protocol (OTLP) 中的 trace 数据。

多种存储后端

Jaeger 可与越来越多的存储后端配合使用:

WARNING

Alauda Distributed Tracing 仅支持 Elasticsearch 8.x 和 OpenSearch 3.x。

  • 它原生支持流行的开源 NoSQL 数据库作为 trace 存储后端:Cassandra 4.0+、Elasticsearch 7.x/8.x 和 OpenSearch 1.0+。
  • 还支持使用 Badger 的嵌入式数据库,以及用于测试环境的简单内存存储。

采样

为了控制对应用的开销和存储成本,Jaeger 支持多种采样方式:基于 head 的集中式远程配置采样(静态或自适应)以及基于 tail 的采样。

现代 Web UI

Jaeger Web UI 使用 JavaScript 实现,为一个 React 原生应用。v1.0 中发布了多项性能改进,使 UI 能够高效处理大量数据,并展示包含数万个 span 的 trace(例如,我们曾尝试过一个包含 80,000 个 span 的 trace)。

可观测性

所有 Jaeger backend 组件默认都会暴露 Prometheus 指标。
日志使用结构化日志库 zap 输出到 stdout。

Service Performance Monitoring (SPM)

SPM 通过从 trace 中计算聚合指标并将其可视化为时间序列图表,支持监控和分析服务性能趋势。它是识别和分析性能问题的强大工具。

更多详情请参见 Service Performance Monitoring (SPM)

Zipkin 兼容性

虽然我们推荐使用 OpenTelemetry 对应用进行埋点,但如果您的组织已经投入使用 Zipkin 库进行埋点,就无需重写所有代码。Jaeger 通过在 HTTP 上接收 Zipkin 格式(Thrift、JSON v1/v2 和 Protobuf)的 span,提供与 Zipkin 的向后兼容性。从 Zipkin backend 迁移,只需将来自 Zipkin 库的流量路由到 Jaeger backend 即可。