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
,也可以将其注册为全局 tracer。
const opentracing = require('opentracing-javascript') opentracing.initGlobalTracer(elasticTracer); // ... const tracer = opentracing.globalTracer();
请参考 opentracing-javascript 文档以了解更多关于 OpenTracing API 的详细信息。
如果您使用 script 标签加载 RUM 代理,请确保使用我们的 OpenTracing bundle (@elastic/apm-rum/dist/bundles/elastic-apm-opentracing.umd.js
) ,然后您可以使用 window.elasticApm.createTracer()
创建一个 tracer。
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 错误。