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 并选择您的部署。在 Kibana 中,选择 添加数据,然后搜索并选择“Elastic APM”。如果集成已安装,在策略选项卡下,选择 操作 > 编辑集成。如果集成尚未安装,请选择 添加 Elastic APM。复制 URL。如果您使用的是代理授权,请复制 Secret 令牌。
  2. 将 APM 集成配置为您的 Jaeger 代理的收集器。

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

    --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 客户端中的本地采样编辑

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

开始发送数据编辑

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

注意事项编辑

Elastic APM 和 Jaeger 之间存在一些限制和差异,您应该了解这些限制和差异。

Jaeger 集成限制

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

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

  • Jaeger 客户端仅发送跟踪数据。APM 代理支持更多功能,例如多种类型的指标和应用程序细分图表。使用 Jaeger 时,APM 应用程序中将无法使用这些功能。
  • Elastic APM 的 数据模型 与 Jaegers 不同。为了使 Jaeger 跟踪数据与 Elastic 的数据模型一起使用,我们依赖于使用适当的 span.kind 对跨度进行标记。

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