OpenTracing bridge
编辑OpenTracing bridge编辑
OpenTracing 已停止使用,建议使用 OpenTelemetry bridge。
最新支持的 OpenTracing 版本:0.33(截至代理和 OpenTracing-bridge 版本 1.9.0)
Elastic APM OpenTracing bridge 允许使用 OpenTracing API 创建 Elastic APM 事务
和 Span
。换句话说,它将对 OpenTracing API 的调用转换为 Elastic APM,从而允许重用现有的仪表。
服务的第一个 span 将被转换为 Elastic APM 事务
,后续的 span 将被映射到 Elastic APM Span
。
入门编辑
开始使用 OpenTracing API bridge 的第一步是声明对 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 bridge 支持通过 ServiceLoader 机制进行 跟踪器
查找和初始化。依赖于此功能的系统示例是 tracer-resolver,它被各种 OpenTracing 库使用,例如 Apache Camel OpenTracing 组件。当使用此类时,不需要更改代码,只需添加 OpenTracing 库和 Elastic OpenTracing bridge 的依赖项。
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 功能都受支持。
上下文传播编辑
此 bridge 仅支持 Format.Builtin.TEXT_MAP
和 Format.Builtin.HTTP_HEADERS
格式。 Format.Builtin.BINARY
当前不受支持。
Span 引用编辑
目前,此 bridge 仅支持 child_of
引用。其他引用(如 follows_from
)尚不受支持。
Baggage编辑
不支持 Span.setBaggageItem(String, String)
方法。Baggage 项目将被静默丢弃。
日志编辑
仅支持异常日志记录。在 OpenTracing span 上记录异常将创建一个 Elastic APM 错误
。示例
Exception e = ... span.log( Map.of( "event", "error", "error.object", e ) )
其他日志将被静默丢弃。