与 Jaeger 集成

编辑

对 Jaeger 的支持已弃用,将在 Elastic APM 的未来版本中移除。 Jaeger 客户端已弃用,推荐使用 OpenTelemetry SDK,并且 OpenTelemetry 已从其 规范 中删除所有 Jaeger 导出器。

Elastic APM 与 Jaeger 集成,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 来标记跨度。

    • 服务器 Jaeger 跨度映射到 Elastic APM 事务
    • 客户端 Jaeger 跨度映射到 Elastic APM 跨度,除非跨度是根跨度,在这种情况下,它将映射到 Elastic APM 事务