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 自动检测已知的框架,而是只依赖手动代码检测,请禁用自动代码检测设置配置选项 instrumentfalse

入门编辑

在应用程序启动时 require 'elastic_apm/opentracing' 或者在您的 Gemfile 中指定 require: 参数,例如 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 方法。行李项目将被丢弃,并显示警告日志消息。

日志编辑

目前不支持日志。