In an application auto instrumented with the javaagent, it looks possible to add manual instrumentation according to the documentation.
OTEL_TRACES_EXPORTER=logging
to enable logging exporter for traces.OpenTelemetrySdk
and register a SdkTracerProvider
(configured either manually or via env variables/system properties as well)What happens if auto instrumentation configures some exporters (logging for instance) and manual instrumentation define another one (OTLP/HTTP for instance)?
Is there a unique instance of OpenTelemetry
in this case or two living each in "different contexts"?
Several questions but related to the same topic: how manual and auto instrumentation live together?
(For additional context, I'm looking to have manual metrics, auto instrumented traces and potentially some manual traces as well)
Even though the question is a bit broad, let me try to give some hints to users that would read it.
OpenTelemetry
instances. The java agent would instantiate and register the global instance (GlobalOpenTelemetry
) and your code may instantiate another OpenTelemetry
but not register it as the global one.
OpenTelemetry
instance or the other and you'd loose "correlation". For instance, with traces, you may get two traces instead of one.OpenTelemetrySdk
with manual configs, or by using environment variables / system properties as the java agent is doing thanks to opentelemetry-sdk-extension-autoconfigure
dependency.GlobalOpenTelemetry.get()
.
OpenTelemetry
instance and use your framework to provide it by calling GlobalOpenTelemetry.get()
at startup.