Vertx vertx = Vertx.vertx(new VertxOptions()
.setTracingOptions(
new OpenTelemetryOptions()
)
);
OpenTelemetry 分布式链路追踪 (vertx-opentelemetry)
该组件提供了 Vert.x 与现代云原生可观测性行业标准 OpenTelemetry 的深度集成。
你也可以显式传入自定义配置的 OpenTelemetry 实例以获得更强大的精细化控制权:
Vertx vertx = Vertx
.builder()
.withTracer(new OpenTelemetryTracingFactory(openTelemetry))
.build();
若仅引入本依赖库,Vert.x 将默认使用 noop 空实现 Tracer(生成的 Trace ID 与 Span ID 均为全零虚拟值)。要采集真实的链路追踪数据,必须引入并初始化 OpenTelemetry SDK:
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
Vertx vertx = Vertx
.builder()
.withTracer(new OpenTelemetryTracingFactory(openTelemetry))
.build();
|
本项目专门实现并注册了 OpenTelemetry 的 若类路径中存在多个
|
HTTP 服务端与客户端链路追踪
Vert.x HTTP 服务端与客户端会在处理 HTTP 请求前后自动上报 Span:
-
name:HTTP 请求方法(如 GET, POST) -
Tags 标签集:
-
http.method:HTTP 请求方法 -
http.url:完整的请求 URL -
http.status_code:HTTP 状态码字符串
-
HTTP 服务端默认的追踪策略为 ALWAYS,可以通过 setTracingPolicy 自由覆盖:
HttpServer server = vertx.createHttpServer(new HttpServerOptions()
.setTracingPolicy(TracingPolicy.IGNORE)
);
HTTP 客户端默认的追踪策略为 PROPAGATE,同样可通过 setTracingPolicy 进行调整:
HttpClient client = vertx.createHttpClient(new HttpClientOptions()
.setTracingPolicy(TracingPolicy.IGNORE)
);
EventBus 事件总线链路追踪
Vert.x EventBus 在进行组件间消息流转时会自动围绕消息交互上报 Span。
发送消息的默认策略为 PROPAGATE,你可以通过 setTracingPolicy 显式指定:
DeliveryOptions options = new DeliveryOptions().setTracingPolicy(TracingPolicy.ALWAYS);
vertx.eventBus().send("the-address", "foo", options);