与 Jaeger 集成

编辑

对 Jaeger 的支持已弃用,并将在未来版本的 Elastic APM 中移除。 Jaeger 客户端已被弃用,取而代之的是 OpenTelemetry SDK,并且 OpenTelemetry 已从其规范中移除了所有 Jaeger 导出器。

Elastic APM 与 Jaeger 集成,这是一个开源的分布式追踪系统。此集成允许具有现有 Jaeger 设置的用户从默认的 Jaeger 后端切换到 Elastic Stack。最重要的是,您的应用程序代码中不需要进行任何检测更改。

支持的架构
编辑

Jaeger 架构支持不同的数据格式和传输协议,这些协议定义了如何将数据发送到收集器。Elastic APM 作为 Jaeger 收集器,支持通过 gRPC 与 Jaeger 代理 进行通信。

  • APM 集成在与 Elastic APM 代理协议相同的主机和端口上提供 Jaeger gRPC。
  • APM 集成 gRPC 端点支持 TLS。如果配置了 SSL,则 SSL 设置将自动应用于 APM 集成的 Jaeger gRPC 端点。
  • gRPC 端点支持概率采样。采样决策可以通过 APM 代理中央配置进行集中配置,也可以在每个 Jaeger 客户端中本地配置。

有关 Jaeger 架构的更多信息,请参阅 Jaeger 文档

开始使用
编辑

通过三个步骤将您预先存在的 Jaeger 设置连接到 Elastic APM

此集成存在一些注意事项

配置 Jaeger 代理编辑

APM 集成在与 Elastic APM 代理协议相同的主机和端口上提供 Jaeger gRPC。

  1. 登录 Elastic Cloud 并选择您的部署。
  2. 在 Kibana 中,在主菜单中查找 集成,或使用全局搜索字段
  3. 选择 Elastic APM。如果已安装该集成,请在策略选项卡下选择 操作 > 编辑集成。如果尚未安装该集成,请选择 添加 Elastic APM。复制 URL。如果您使用的是代理授权,请同时复制密钥令牌。
  4. 将 APM 集成配置为您的 Jaeger 代理的收集器。

    在撰写本文时,Jaeger 代理二进制文件提供了以下 CLI 标志,可用于启用 TLS、输出到 Elastic Cloud 以及设置 APM 集成密钥令牌

    --reporter.grpc.tls.enabled=true
    --reporter.grpc.host-port=<apm-url:443>
    --agent.tags="elastic-apm-auth=Bearer <secret-token>"

对于等效的环境变量,将所有字母更改为大写,并将标点符号替换为下划线 (_)。有关更多信息,请参阅 Jaeger CLI 标志文档

配置采样编辑

APM 集成支持概率采样,可用于减少代理收集和发送的数据量。概率采样根据配置的采样值做出随机采样决策。例如,值 .2 表示将对 20% 的跟踪进行采样。

有两种不同的方法来配置 Jaeger 代理的采样率

APM 代理中央配置(默认)编辑

使用 APM 代理中央配置的中央采样允许 Jaeger 客户端轮询 APM 服务器以获取采样率。这意味着可以按服务和按环境动态配置采样率。有关更多信息,请参阅 中央配置

每个 Jaeger 客户端中的本地采样编辑

如果您无权访问应用程序 UI,则需要更改 Jaeger 客户端的 sampler.typesampler.param。这使您可以在每个 Jaeger 客户端中本地设置采样配置。有关更多信息,请参阅官方 Jaeger 采样文档

开始发送数据编辑

就是这样!现在可以在应用程序 UI 中查看从 Jaeger 客户端发送到 APM 服务器的数据。

注意事项
编辑

您应该注意 Elastic APM 和 Jaeger 之间的一些限制和差异。

Jaeger 集成限制

  • 由于 Jaeger 有自己的跟踪上下文标头,并且当前不支持 W3C 跟踪上下文标头,因此无法混合使用 Elastic 的 APM 代理和 Jaeger 的客户端。
  • Elastic APM 仅支持概率采样。

APM 代理和 Jaeger 客户端之间的差异

  • Jaeger 客户端仅发送跟踪数据。APM 代理支持更多功能,例如多种类型的指标和应用程序分解图表。使用 Jaeger 时,应用程序 UI 中将不提供此类功能。
  • Elastic APM 的 了解数据类型 与 Jaeger 的不同。为了使 Jaeger 跟踪数据与 Elastic 的数据模型一起工作,我们依赖于使用适当的 span.kind 标记的 span。

    • 服务器 Jaeger span 被映射到 Elastic APM 事务
    • 客户端 Jaeger span 被映射到 Elastic APM Span — 除非该 span 是根,在这种情况下,它被映射到 Elastic APM 事务