OpenTracing
编辑OpenTracing编辑
Elastic APM RUM 代理提供了对 OpenTracing API 的实现。 ElasticApmTracer
将 OpenTracing API 调用转换为 Elastic APM,从而允许重用现有的检测。
服务的第一个跨度将被转换为 Elastic APM Transaction
,后续跨度将被映射到 Elastic APM Span
。
入门编辑
为了使用 Elastic APM 的 OpenTracing API,您需要先创建一个 Tracer
const { init: initApm, createTracer } = require('@elastic/apm-rum/dist/bundles/elastic-apm-opentracing.umd.js') const elasticApm = initApm({ // ... }) const elasticTracer = createTracer(elasticApm)
此时,您可以直接使用 elasticTracer
,也可以将其注册为全局跟踪器
const opentracing = require('opentracing-javascript') opentracing.initGlobalTracer(elasticTracer); // ... const tracer = opentracing.globalTracer();
有关 OpenTracing API 的更多详细信息,请参阅 opentracing-javascript 文档。
如果您使用脚本标签加载 RUM 代理,请确保在您的脚本中使用我们的 OpenTracing 包(@elastic/apm-rum/dist/bundles/elastic-apm-opentracing.umd.js
),然后您可以使用 window.elasticApm.createTracer()
创建跟踪器。
Elastic APM 特定标签编辑
Elastic APM 定义了一些未包含在 OpenTracing 规范中的标签,但在 Elastic APM 上下文中是相关的。
-
type
- 设置事务或跨度的类型,例如“page-load”或“ext.http”。如果未指定type
,则会设置custom
。
以下标签仅与根跨度相关,这些跨度将被转换为 Elastic APM 事务。这些标签出现在 Elastic APM 应用程序中事务详细信息页面上的“用户”选项卡中。
-
user.id
- 设置用户 ID -
user.email
- 设置用户电子邮件 -
user.username
- 设置用户名
注意事项编辑
Elastic APM RUM 代理不支持 OpenTracing 的某些功能。
上下文传播编辑
目前,唯一支持的载体格式是 FORMAT_HTTP_HEADERS
和 FORMAT_TEXT_MAP
。不支持 FORMAT_BINARY
。
跨度引用编辑
目前,Elastic APM Tracer 支持 REFERENCE_CHILD_OF
引用。但是,只记录第一个 REFERENCE_CHILD_OF
引用,其余引用将被忽略。其他引用(例如 follows_from
)目前不支持。
行李编辑
不支持 Span.setBaggageItem
方法。行李物品会被静默丢弃。
日志编辑
只支持错误日志记录。在 OpenTracing 跨度上记录错误将创建一个 Elastic APM 错误。