OpenTracing API

编辑

Elastic APM OpenTracing 桥接允许使用 OpenTracing API 创建 Elastic APM TransactionsSpans。换句话说,它将对 OpenTracing API 的调用转换为 Elastic APM,从而允许重用现有的检测。

服务的第一个跨度将转换为 Elastic APM Transaction,后续跨度将映射到 Elastic APM Span

操作模式

编辑

此桥接允许在 Elastic APM Agent 中结合使用不同的操作模式。

  • 空操作
    如果未运行 Elastic APM 代理,则桥接处于空操作模式,并且实际上不会记录和报告跨度。
  • 混合搭配
    如果您想利用 Elastic APM 的自动检测功能,但还想创建自定义跨度或使用 OpenTracing API 向 Elastic APM 创建的跨度添加自定义标签,您可以这样做。OpenTracing 桥接和标准 Elastic APM API 可以无缝交互。
  • 手动检测
    如果您不希望 Elastic APM 自动检测已知的框架,而是只依赖于手动检测,请禁用自动检测配置选项 instrument 设置为 false

入门

编辑

在应用程序启动时 require 'elastic_apm/opentracing' 或将 require: 参数指定给您的 Gemfile,例如 gem 'elastic_apm', require: 'elastic_apm/opentracing'

将 Elastic APM 设置为全局跟踪器

编辑
::OpenTracing.global_tracer = ElasticAPM::OpenTracing::Tracer.new

Elastic APM 特定标签

编辑

Elastic APM 定义了一些未包含在 OpenTracing API 中但在 Elastic APM 上下文中相关的标签。

  • type - 设置事务的类型,例如 requestextdb
  • user.id - 设置用户 ID,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中
  • user.email - 设置用户电子邮件,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中
  • user.username - 设置用户名,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中
  • result - 设置事务的结果。覆盖 success 的默认值。如果 error 标签设置为 true,则默认值为 error

注意事项

编辑

并非所有 OpenTracing API 功能都受支持。

上下文传播

编辑

此桥接仅支持 OpenTracing::FORMAT_RACK 格式,使用以 HTTP_ 为前缀的大写名称的 HTTP 标头,就像 Rack 所做的那样。

OpenTracing::FORMAT_BINARY 当前不受支持。

跨度引用

编辑

目前,此桥接仅支持 child_of 引用。其他引用,如 follows_from 尚未得到支持。

行李

编辑

Span.set_baggage 方法不受支持。行李物品将被丢弃,并显示警告日志消息。

日志

编辑

日志目前不受支持。