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 classCheck 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 aSpanimplementation which delegates to the provided HelidonSpan, thereby notifying registeredSpanListenerobjects of span lifecycle events.static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
TcallbackEnabledFrom(Tracer helidonTracer) Returns an OpenTelemetryTracerimplementation which providesSpanBuilderandSpaninstances capable of notifyingSpanListenerobjects registered with the supplied Helidon tracer.static <T extends io.opentelemetry.api.trace.Span & Wrapper>
TcallbackEnabledFrom(io.opentelemetry.api.trace.Span otelSpan) Returns an OpenTelemetrySpanimplementation which delegates to theSpanmanaged by the supplied HelidonSpanand which also providesScopeinstances capable of notifying registeredSpanListenerobjects.static <T extends io.opentelemetry.api.trace.Tracer & Wrapper>
TcallbackEnabledFrom(io.opentelemetry.api.trace.Tracer otelTracer) Returns an OpenTelemetryTracerimplementation which providesSpanBuilderandSpaninstances capable of notifying registeredSpanListenerobjects.static io.helidon.tracing.providers.opentelemetry.OpenTelemetryTracercreate(io.opentelemetry.api.OpenTelemetry telemetry, io.opentelemetry.api.trace.Tracer tracer, Map<String, String> tags) Wrap an open telemetry tracer.static Spancreate(io.opentelemetry.api.trace.Span span) Wrap an open telemetry span.static Span.Builder<?> Wrap an open telemetry span builder.static Spancreate(io.opentelemetry.api.trace.Span span, io.opentelemetry.api.baggage.Baggage baggage) Wrap an open telemetry span.static SpanContextcreate(io.opentelemetry.context.Context context) Wrap an Open Telemetry context.static voidinvokeListeners(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- HelidonTracerto 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 OpenTelemetryTracerimplementation which providesSpanBuilderandSpaninstances capable of notifying registeredSpanListenerobjects.The returned callback-enabled tracer is prepared with any service-loaded
SpanListenerobjects. 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).Code which has a Helidonio.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);Tracershould 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 OpenTelemetryTracerto expose as a separate callback-enabled OpenTelemetryTracer- Returns:
- an OpenTelemetry
TracerandWrapperable to notify span lifecycle listeners
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Tracer & Wrapper> T callbackEnabledFrom(Tracer helidonTracer) Returns an OpenTelemetryTracerimplementation which providesSpanBuilderandSpaninstances capable of notifyingSpanListenerobjects registered with the supplied Helidon tracer.- Type Parameters:
T- specific type of the tracer to return- Parameters:
helidonTracer- the HelidonTracerto expose as a callback-enabled OpenTelemetryTracer- Returns:
- an OpenTelemetry
TracerandWrapperable 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 OpenTelemetrySpanimplementation which delegates to theSpanmanaged by the supplied HelidonSpanand which also providesScopeinstances capable of notifying registeredSpanListenerobjects.This method internally creates a new Helidon
Spanto perform the notifications. Code which already has a HelidonSpanfrom 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 OpenTelemetrySpanto expose as a callback-enabled OpenTelemetrySpan- Returns:
- an OpenTelemetry
SpanandWrapperwhich also performs lifecycle callbacks
-
callbackEnabledFrom
public static <T extends io.opentelemetry.api.trace.Span & Wrapper> T callbackEnabledFrom(Span helidonSpan) Returns aSpanimplementation which delegates to the provided HelidonSpan, thereby notifying registeredSpanListenerobjects of span lifecycle events.- Type Parameters:
T- specific type of theSpanto return- Parameters:
helidonSpan- the HelidonSpanto expose as a callback-enabled OpenTelemetrySpan- Returns:
- an OpenTelemetry
SpanandWrapperwhich 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- HelidonSpanwhose listeners are to be invokedlogger- logger for reporting exceptions during listener invocationsoperation- operation to invoke on each listener
-