What is the best way to get a handle of an OpenTelemetry object in a Verticle and how to effectively use it? The official examples are unfortunately not very helpful. It is shown how to set it up but not how to get a handle of it for manual instrumentation.
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
VertxOptions vertxOptions = new VertxOptions();
vertxOptions.setTracingOptions(new OpenTelemetryOptions(openTelemetry));
Vertx vertx = Vertx.vertx(vertxOptions);
I would like to do something like this:
router.route(HttpMethod.GET, "/stats/system/time").handler(ctx -> {
Tracer tracer = ...vertext.please.getTracer...get("Test");
SpanBuilder spanBuilder = tracer.spanBuilder("testSpan").setAttribute("task", "json-generation");
Span span = spanBuilder.startSpan();
ctx.json(new JsonObject().put("systemTime", LocalDateTime.now()));
span.end();
});
You can get a reference to the Vert.x tracer object like this:
Then you can use the tracer
receiveRequest()
/sendResponse()
methods at the beginning / end of the process.