Skip to content

Commit 93fa007

Browse files
committed
fix: inject Dev UI tracer into core engine for embedded telemetry
1 parent 4009905 commit 93fa007

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

core/src/main/java/com/google/adk/telemetry/Tracing.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,20 @@ public class Tracing {
133133
AttributeKey.stringKey("gcp.vertex.agent.data");
134134

135135
@SuppressWarnings("NonFinalStaticField")
136-
private static Tracer tracer = GlobalOpenTelemetry.getTracer("gcp.vertex.agent");
136+
private static volatile Tracer tracer = GlobalOpenTelemetry.getTracer("gcp.vertex.agent");
137137

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

142142
private Tracing() {}
143143

144+
public static void setTracer(Tracer customTracer) {
145+
if (customTracer != null) {
146+
tracer = customTracer;
147+
}
148+
}
149+
144150
private static void setInvocationAttributes(
145151
Span span, InvocationContext invocationContext, String eventId) {
146152
span.setAttribute(ADK_INVOCATION_ID, invocationContext.invocationId());

dev/src/main/java/com/google/adk/web/config/OpenTelemetryConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.adk.web.config;
1818

19+
import com.google.adk.telemetry.Tracing;
1920
import com.google.adk.web.service.ApiServerSpanExporter;
2021
import io.opentelemetry.api.OpenTelemetry;
2122
import io.opentelemetry.api.common.AttributeKey;
@@ -64,13 +65,17 @@ public OpenTelemetry openTelemetrySdk(SdkTracerProvider sdkTracerProvider) {
6465
// If we get here, it's already set, so just return a new instance without global
6566
// registration
6667
otelLog.debug("OpenTelemetry already registered globally, creating non-global instance.");
68+
OpenTelemetrySdk sdk =
69+
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).build();
70+
Tracing.setTracer(sdk.getTracer("gcp.vertex.agent"));
6771
return OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).build();
6872
} catch (IllegalStateException e) {
6973
// GlobalOpenTelemetry hasn't been set yet, safe to register globally
7074
otelLog.debug("Registering OpenTelemetry globally.");
7175
OpenTelemetrySdk otelSdk =
7276
OpenTelemetrySdk.builder().setTracerProvider(sdkTracerProvider).buildAndRegisterGlobal();
7377
Runtime.getRuntime().addShutdownHook(new Thread(otelSdk::close));
78+
Tracing.setTracer(otelSdk.getTracer("gcp.vertex.agent"));
7479
return otelSdk;
7580
}
7681
}

0 commit comments

Comments
 (0)