Class HelidonOpenTelemetry
java.lang.Object
io.helidon.tracing.providers.opentelemetry.HelidonOpenTelemetry
Open Telemetry factory methods to create wrappers for Open Telemetry types.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Check if OpenTelemetry is present by indirect properties. -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic <T extends io.opentelemetry.api.trace.Span & Wrapper>
TcallbackEnabledFrom
(Span helidonSpan) Returns aSpan
implementation which delegates to the provided HelidonSpan
, thereby notifying registeredSpanListener
objects of span lifecycle events.static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
TcallbackEnabledFrom
(Tracer helidonTracer) Returns an OpenTelemetryTracer
implementation which providesSpanBuilder
andSpan
instances capable of notifyingSpanListener
objects registered with the supplied Helidon tracer.static <T extends io.opentelemetry.api.trace.Span & Wrapper>
TcallbackEnabledFrom
(io.opentelemetry.api.trace.Span otelSpan) Returns an OpenTelemetrySpan
implementation which delegates to theSpan
managed by the supplied HelidonSpan
and which also providesScope
instances capable of notifying registeredSpanListener
objects.static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
TcallbackEnabledFrom
(io.opentelemetry.api.trace.Tracer otelTracer) Returns an OpenTelemetryTracer
implementation which providesSpanBuilder
andSpan
instances capable of notifying registeredSpanListener
objects.static io.helidon.tracing.providers.opentelemetry.OpenTelemetryTracer
create
(io.opentelemetry.api.OpenTelemetry telemetry, io.opentelemetry.api.trace.Tracer tracer, Map<String, String> tags) Wrap an open telemetry tracer.static Span
create
(io.opentelemetry.api.trace.Span span) Wrap an open telemetry span.static Span.Builder
<?> Wrap an open telemetry span builder.static Span
create
(io.opentelemetry.api.trace.Span span, io.opentelemetry.api.baggage.Baggage baggage) Wrap an open telemetry span.static SpanContext
create
(io.opentelemetry.context.Context context) Wrap an Open Telemetry context.static void
invokeListeners
(Span helidonSpan, System.Logger logger, Consumer<SpanListener> operation) Invokes listeners known to the specified Helidon span using the provided operation; intended for Helidon internal use only.
-
Field Details
-
OTEL_AGENT_PRESENT_PROPERTY
OpenTelemetry property for indicating if the Java agent is present.- See Also:
-
IO_OPENTELEMETRY_JAVAAGENT
OpenTelemetry property for the Java agent.- See Also:
-
-
Method Details
-
create
public static io.helidon.tracing.providers.opentelemetry.OpenTelemetryTracer create(io.opentelemetry.api.OpenTelemetry telemetry, io.opentelemetry.api.trace.Tracer tracer, Map<String, String> tags) Wrap an open telemetry tracer.- Parameters:
telemetry
- open telemetry instancetracer
- tracertags
- tracer tags- Returns:
- Helidon
Tracer
-
create
Wrap an open telemetry span.- Parameters:
span
- open telemetry span- Returns:
- Helidon
Span
-
create
public static Span create(io.opentelemetry.api.trace.Span span, io.opentelemetry.api.baggage.Baggage baggage) Wrap an open telemetry span.- Parameters:
span
- open telemetry spanbaggage
- open telemetry baggage- Returns:
- Helidon (@link io.helidon.tracing.Span}
-
create
public static Span.Builder<?> create(io.opentelemetry.api.trace.SpanBuilder spanBuilder, Tracer helidonTracer) Wrap an open telemetry span builder.- Parameters:
spanBuilder
- open telemetry span builderhelidonTracer
- HelidonTracer
to use in creating the wrapping span builder- Returns:
- Helidon
Span.Builder
-
create
Wrap an Open Telemetry context.- Parameters:
context
- Open Telemetry context- Returns:
- Helidon
SpanContext
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Tracer & Wrapper> T callbackEnabledFrom(io.opentelemetry.api.trace.Tracer otelTracer) Returns an OpenTelemetryTracer
implementation which providesSpanBuilder
andSpan
instances capable of notifying registeredSpanListener
objects.The returned callback-enabled tracer is prepared with any service-loaded
SpanListener
objects. If the calling code wants Helidon to notify other listeners it must register them explicitly as shown in the example (which shows fully-qualified types for clarity).io.opentelemetry.api.trace.Tracer nativeOtelTracer; // previously-assigned io.helidon.tracing.api.SpanListener mySpanListener; // previously-assigned io.opentelemetry.api.trace.Tracer callbackEnabledOtelTracer = HelidonOpenTelemetry.callbackEnabledFrom(nativeOtelTracer); callbackEnabledOtelTracer.unwrap(io.helidon.tracing.api.Tracer.class).register(mySpanListener);
Tracer
should instead invokecallbackEnabledFrom(io.helidon.tracing.Tracer)
, passing the Helidon tracer. Then Helidon will automatically notify all listeners already registered with the Helidon tracer.- Type Parameters:
T
- specific type of the tracer to return- Parameters:
otelTracer
- the native OpenTelemetryTracer
to expose as a separate callback-enabled OpenTelemetryTracer
- Returns:
- an OpenTelemetry
Tracer
andWrapper
able to notify span lifecycle listeners
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Tracer & Wrapper> T callbackEnabledFrom(Tracer helidonTracer) Returns an OpenTelemetryTracer
implementation which providesSpanBuilder
andSpan
instances capable of notifyingSpanListener
objects registered with the supplied Helidon tracer.- Type Parameters:
T
- specific type of the tracer to return- Parameters:
helidonTracer
- the HelidonTracer
to expose as a callback-enabled OpenTelemetryTracer
- Returns:
- an OpenTelemetry
Tracer
andWrapper
able to notify span lifecycle listeners
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Span & Wrapper> T callbackEnabledFrom(io.opentelemetry.api.trace.Span otelSpan) Returns an OpenTelemetrySpan
implementation which delegates to theSpan
managed by the supplied HelidonSpan
and which also providesScope
instances capable of notifying registeredSpanListener
objects.This method internally creates a new Helidon
Span
to perform the notifications. Code which already has a HelidonSpan
from which it unwrapped the OpenTelemetry span should instead invokecallbackEnabledFrom(io.helidon.tracing.Span)
, passing the Helidon tracer.- Type Parameters:
T
- specific type of the Span to return- Parameters:
otelSpan
- the native OpenTelemetrySpan
to expose as a callback-enabled OpenTelemetrySpan
- Returns:
- an OpenTelemetry
Span
andWrapper
which also performs lifecycle callbacks
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Span & Wrapper> T callbackEnabledFrom(Span helidonSpan) Returns aSpan
implementation which delegates to the provided HelidonSpan
, thereby notifying registeredSpanListener
objects of span lifecycle events.- Type Parameters:
T
- specific type of theSpan
to return- Parameters:
helidonSpan
- the HelidonSpan
to expose as a callback-enabled OpenTelemetrySpan
- Returns:
- an OpenTelemetry
Span
andWrapper
which also performs lifecycle callbacks
-
invokeListeners
public static void invokeListeners(Span helidonSpan, System.Logger logger, Consumer<SpanListener> operation) Invokes listeners known to the specified Helidon span using the provided operation; intended for Helidon internal use only.- Parameters:
helidonSpan
- HelidonSpan
whose listeners are to be invokedlogger
- logger for reporting exceptions during listener invocationsoperation
- operation to invoke on each listener
-