Class GlobalOpenTelemetry
If using the OpenTelemetry SDK, you may want to instantiate the OpenTelemetry
to
provide configuration, for example of Resource
or Sampler
. See
OpenTelemetrySdk
and OpenTelemetrySdk.builder
for information on how to construct the
SDK's OpenTelemetry
implementation.
WARNING: Due to the inherent complications around initialization order involving this class and its single global instance, we strongly recommend *not* using GlobalOpenTelemetry unless you have a use-case that absolutely requires it. Please favor using instances of OpenTelemetry wherever possible.
If you are using the OpenTelemetry javaagent, it is generally best to only call GlobalOpenTelemetry.get() once, and then pass the resulting reference where you need to use it.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
Static global instances are obfuscated when they are returned from the API to prevent users from casting them to their SDK-specific implementation. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final String
private static GlobalOpenTelemetry.ObfuscatedOpenTelemetry
private static final Logger
private static final Object
private static Throwable
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic OpenTelemetry
get()
Returns the registered globalOpenTelemetry
.static Meter
Gets or creates a named meter instance from the globally registeredMeterProvider
.static MeterProvider
Returns the globally registeredMeterProvider
.static ContextPropagators
Returns the globally registeredContextPropagators
for remote propagation of a context.static Tracer
Gets or creates a named tracer instance from the globally registeredTracerProvider
.static Tracer
Gets or creates a named and versioned tracer instance from the globally registeredTracerProvider
.static TracerProvider
Returns the globally registeredTracerProvider
.private static OpenTelemetry
static MeterBuilder
meterBuilder
(String instrumentationScopeName) Creates a MeterBuilder for a namedMeter
instance.static void
Unsets the globalOpenTelemetry
.static void
set
(OpenTelemetry openTelemetry) Sets theOpenTelemetry
that should be the global instance.static TracerBuilder
tracerBuilder
(String instrumentationScopeName) Creates a TracerBuilder for a namedTracer
instance.
-
Field Details
-
GLOBAL_AUTOCONFIGURE_ENABLED_PROPERTY
- See Also:
-
logger
-
mutex
-
globalOpenTelemetry
-
setGlobalCaller
-
-
Constructor Details
-
GlobalOpenTelemetry
private GlobalOpenTelemetry()
-
-
Method Details
-
get
Returns the registered globalOpenTelemetry
.- Throws:
IllegalStateException
- if a provider has been specified by system property using the interface FQCN but the specified provider cannot be found.
-
set
Sets theOpenTelemetry
that should be the global instance. Future calls toget()
will return the providedOpenTelemetry
instance. This should be called once as early as possible in your application initialization logic, often in astatic
block in your main class. It should only be called once - an attempt to call it a second time will result in an error. If trying to set the globalOpenTelemetry
multiple times in tests, useresetForTest()
between them.If you are using the OpenTelemetry SDK, you should generally use
OpenTelemetrySdk.builder().buildAndRegisterGlobal()
instead of calling this method directly. -
getTracerProvider
Returns the globally registeredTracerProvider
. -
getTracer
Gets or creates a named tracer instance from the globally registeredTracerProvider
.This is a shortcut method for
getTracerProvider().get(instrumentationScopeName)
- Parameters:
instrumentationScopeName
- A name uniquely identifying the instrumentation scope, such as the instrumentation library, package, or fully qualified class name. Must not be null.- Returns:
- a tracer instance.
-
getTracer
Gets or creates a named and versioned tracer instance from the globally registeredTracerProvider
.This is a shortcut method for
getTracerProvider().get(instrumentationScopeName, instrumentationScopeVersion)
- Parameters:
instrumentationScopeName
- A name uniquely identifying the instrumentation scope, such as the instrumentation library, package, or fully qualified class name. Must not be null.instrumentationScopeVersion
- The version of the instrumentation scope (e.g., "1.0.0").- Returns:
- a tracer instance.
-
tracerBuilder
Creates a TracerBuilder for a namedTracer
instance.This is a shortcut method for
get().tracerBuilder(instrumentationScopeName)
- Parameters:
instrumentationScopeName
- A name uniquely identifying the instrumentation scope, such as the instrumentation library, package, or fully qualified class name. Must not be null.- Returns:
- a TracerBuilder instance.
- Since:
- 1.4.0
-
getMeterProvider
Returns the globally registeredMeterProvider
.- Since:
- 1.10.0
-
getMeter
Gets or creates a named meter instance from the globally registeredMeterProvider
.This is a shortcut method for
getMeterProvider().get(instrumentationScopeName)
- Parameters:
instrumentationScopeName
- A name uniquely identifying the instrumentation scope, such as the instrumentation library, package, or fully qualified class name. Must not be null.- Returns:
- a Meter instance.
- Since:
- 1.10.0
-
meterBuilder
Creates a MeterBuilder for a namedMeter
instance.This is a shortcut method for
get().meterBuilder(instrumentationScopeName)
- Parameters:
instrumentationScopeName
- A name uniquely identifying the instrumentation scope, such as the instrumentation library, package, or fully qualified class name. Must not be null.- Returns:
- a MeterBuilder instance.
- Since:
- 1.10.0
-
resetForTest
public static void resetForTest()Unsets the globalOpenTelemetry
. This is only meant to be used from tests which need to reconfigureOpenTelemetry
. -
getPropagators
Returns the globally registeredContextPropagators
for remote propagation of a context. -
maybeAutoConfigureAndSetGlobal
-