正在加载

与 Jaeger 集成(已弃用)

Elastic Stack 已弃用

警告

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

Elastic APM 与 Jaeger 集成,Jaeger 是一个开源的分布式追踪系统。通过此集成,现有 Jaeger 设置的用户可以从默认 Jaeger 后端切换到 Elastic Stack。最重要的是,无需更改应用程序代码中的任何 instrumentation。

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

重要提示

此集成存在注意事项

APM 集成通过与 Elastic APM 代理协议相同的主机和端口提供 Jaeger gRPC 服务。

  1. 登录 Elastic Cloud 并选择您的部署。

  2. 在 Kibana 中,在主菜单中查找 Integrations(集成),或使用全局搜索字段

  3. 选择 Elastic APM。 如果已安装该集成,请在策略选项卡下选择 Actions(操作) > Edit integration(编辑集成)。 如果尚未安装该集成,请选择 Add Elastic APM(添加 Elastic APM)。 复制 URL。 如果您使用的是代理授权,请同时复制 Secret token(密钥令牌)。

  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 标志文档

  1. 将 APM 集成配置为 Jaeger 代理的收集器。 在 Kibana 中,在主菜单中查找 Integrations(集成),或使用全局搜索字段。 选择 Elastic APM。 如果已安装该集成,请在策略选项卡下选择 Actions(操作) > Edit integration(编辑集成)。 如果尚未安装该集成,请选择 Add Elastic APM(添加 Elastic APM)。 复制 Host(主机)。 如果您使用的是代理授权,请同时复制 Secret token(密钥令牌)。

    截至撰写本文时,Jaeger 代理二进制文件提供了 --reporter.grpc.host-port CLI 标志。 使用它来定义 APM 集成正在监听的主机和端口

    --reporter.grpc.host-port=<apm-endpoint:8200>
    
  2. (可选)启用加密

    当为 APM 集成启用 TLS 时,Jaeger 代理还必须启用 TLS 通信

    --reporter.grpc.tls.enabled=true
    
  3. (可选)启用基于令牌的授权

    可以使用密钥令牌或 API 密钥来确保只有授权的 Jaeger 代理才能将数据发送到 APM 集成。 启用后,使用代理级别标记来授权 Jaeger 代理与 APM Server 的通信

    --agent.tags="elastic-apm-auth=Bearer <secret-token>"
    
提示

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

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

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

通过 APM 代理中央配置进行中央采样,允许 Jaeger 客户端轮询 APM Server 以获取采样率。 这意味着可以在每个服务和每个环境的基础上动态配置采样率。 请参阅中央配置以了解更多信息。

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

就这样! 现在可以在 Applications UI(应用程序 UI)中查看从 Jaeger 客户端发送到 APM Server 的数据。

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

Jaeger 集成限制

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

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

  • Jaeger 客户端仅发送跟踪数据。 APM 代理支持更多功能,例如多种类型的指标和应用程序分解图表。 使用 Jaeger 时,诸如此类的功能在 Applications UI(应用程序 UI)中将不可用。

  • Elastic APM 的 了解数据类型 与 Jaegers 不同。 为了使 Jaeger 跟踪数据与 Elastic 的数据模型一起使用,我们依赖于使用适当的 span.kind 标记 span。

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