OpenTracing 桥接
编辑OpenTracing 桥接
编辑OpenTracing 已停止维护,转而支持 OpenTelemetry。请考虑使用 OpenTelemetry 桥接。
最新支持的 OpenTracing 版本:0.33(截至代理和 OpenTracing 桥接版本 1.9.0)
Elastic APM OpenTracing 桥接允许使用 OpenTracing API 创建 Elastic APM Transactions
和 Spans
。换句话说,它将对 OpenTracing API 的调用转换为 Elastic APM,从而允许重用现有的检测。
服务的第一个 span 将转换为 Elastic APM Transaction
,后续的 span 将映射到 Elastic APM Span
。
入门
编辑开始使用 OpenTracing API 桥接的第一步是声明对 API 的依赖
pom.xml。
<dependency> <groupId>co.elastic.apm</groupId> <artifactId>apm-opentracing</artifactId> <version>${elastic-apm.version}</version> </dependency>
build.gradle。
compile "co.elastic.apm:apm-opentracing:$elasticApmVersion"
将版本占位符替换为 Maven Central 的最新版本:
初始化追踪器
编辑import co.elastic.apm.opentracing.ElasticApmTracer; import io.opentracing.Tracer; Tracer tracer = new ElasticApmTracer();
自 1.22.0 版本起,OpenTracing 桥接支持通过 ServiceLoader 机制查找和初始化 Tracer
。一个依赖此功能的系统示例是 tracer-resolver,它被各种 OpenTracing 库使用,例如 Apache Camel OpenTracing 组件。当使用此类组件时,无需更改代码,只需添加 OpenTracing 库和 Elastic OpenTracing 桥接的依赖项即可。
Elastic APM 特定标签
编辑Elastic APM 定义了一些未包含在 OpenTracing API 中但在 Elastic APM 上下文中相关的标签。
-
type
- 设置事务/span 的类型,例如request
、ext
或db
-
subtype
- 设置 span 的子类型,例如http
、mysql
或jsf
-
action
- 设置与 span 相关的操作,例如query
、execute
或render
-
user.id
- 设置用户 ID,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中 -
user.email
- 设置用户电子邮件,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中 -
user.username
- 设置用户名,显示在 Elastic APM 应用程序中事务详细信息的“用户”选项卡中 -
result
- 设置事务的结果。覆盖默认值success
。如果error
标签设置为true
,则默认值为error
。例如,将http.status_code
设置为200
会隐式地将结果设置为HTTP 2xx
(如果未明确设置其他值)。
注意事项
编辑并非所有 OpenTracing API 的功能都受支持。
上下文传播
编辑此桥接仅支持 Format.Builtin.TEXT_MAP
和 Format.Builtin.HTTP_HEADERS
格式。Format.Builtin.BINARY
目前不受支持。
Span 引用
编辑目前,此桥接仅支持 child_of
引用。其他引用,如 follows_from
尚不支持。
Baggage
编辑不支持 Span.setBaggageItem(String, String)
方法。Baggage 项将被静默丢弃。
日志
编辑仅支持异常日志记录。在 OpenTracing span 上记录异常将创建一个 Elastic APM Error
。例如
Exception e = ... span.log( Map.of( "event", "error", "error.object", e ) )
其他日志将被静默丢弃。