Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion core/src/main/java/com/google/adk/telemetry/Tracing.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,14 +133,20 @@ public class Tracing {
AttributeKey.stringKey("gcp.vertex.agent.data");

@SuppressWarnings("NonFinalStaticField")
private static Tracer tracer = GlobalOpenTelemetry.getTracer("gcp.vertex.agent");
private static volatile Tracer tracer = GlobalOpenTelemetry.getTracer("gcp.vertex.agent");

private static final boolean CAPTURE_MESSAGE_CONTENT_IN_SPANS =
Boolean.parseBoolean(
System.getenv().getOrDefault("ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS", "true"));

private Tracing() {}

public static void setTracer(Tracer customTracer) {
if (customTracer != null) {
tracer = customTracer;
}
}

private static void setInvocationAttributes(
Span span, InvocationContext invocationContext, String eventId) {
span.setAttribute(ADK_INVOCATION_ID, invocationContext.invocationId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.google.adk.web.config;

import com.google.adk.telemetry.Tracing;
import com.google.adk.web.service.ApiServerSpanExporter;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
Expand Down Expand Up @@ -64,13 +65,17 @@ public OpenTelemetry openTelemetrySdk(SdkTracerProvider sdkTracerProvider) {
// If we get here, it's already set, so just return a new instance without global
// registration
otelLog.debug("OpenTelemetry already registered globally, creating non-global instance.");
OpenTelemetrySdk sdk =
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).build();
Tracing.setTracer(sdk.getTracer("gcp.vertex.agent"));
return OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).build();
} catch (IllegalStateException e) {
// GlobalOpenTelemetry hasn't been set yet, safe to register globally
otelLog.debug("Registering OpenTelemetry globally.");
OpenTelemetrySdk otelSdk =
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).buildAndRegisterGlobal();
Runtime.getRuntime().addShutdownHook(new Thread(otelSdk::close));
Tracing.setTracer(otelSdk.getTracer("gcp.vertex.agent"));
return otelSdk;
}
}
Expand Down