Skip to content

Commit fc7bc7c

Browse files
google-genai-botcopybara-github
authored andcommitted
feat:Add telemetry headers
The change adds custom telemetry headers (x-goog-api-client, user-agent) to BigQuery and BigQuery Storage API calls made by the plugin, including the ADK and Java versions. PiperOrigin-RevId: 901368290
1 parent 26429af commit fc7bc7c

3 files changed

Lines changed: 23 additions & 5 deletions

File tree

core/src/main/java/com/google/adk/plugins/agentanalytics/BigQueryAgentAnalyticsPlugin.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.adk.plugins.agentanalytics;
1818

1919
import static com.google.adk.plugins.agentanalytics.BigQueryUtils.createAnalyticsViews;
20+
import static com.google.adk.plugins.agentanalytics.BigQueryUtils.getVersionHeaderValue;
2021
import static com.google.adk.plugins.agentanalytics.BigQueryUtils.maybeUpgradeSchema;
2122
import static com.google.adk.plugins.agentanalytics.JsonFormatter.convertToJsonNode;
2223
import static com.google.adk.plugins.agentanalytics.JsonFormatter.smartTruncate;
@@ -40,6 +41,7 @@
4041
import com.google.adk.tools.ToolContext;
4142
import com.google.adk.tools.mcp.AbstractMcpTool;
4243
import com.google.adk.utils.AgentEnums.AgentOrigin;
44+
import com.google.api.gax.rpc.FixedHeaderProvider;
4345
import com.google.auth.oauth2.GoogleCredentials;
4446
import com.google.cloud.bigquery.BigQuery;
4547
import com.google.cloud.bigquery.BigQueryException;
@@ -110,6 +112,8 @@ public BigQueryAgentAnalyticsPlugin(BigQueryLoggerConfig config, BigQuery bigQue
110112

111113
private static BigQuery createBigQuery(BigQueryLoggerConfig config) throws IOException {
112114
BigQueryOptions.Builder builder = BigQueryOptions.newBuilder();
115+
builder.setHeaderProvider(
116+
FixedHeaderProvider.create(ImmutableMap.of("user-agent", getVersionHeaderValue())));
113117
if (config.credentials() != null) {
114118
builder.setCredentials(config.credentials());
115119
} else {

core/src/main/java/com/google/adk/plugins/agentanalytics/BigQueryUtils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static com.google.common.collect.ImmutableMap.toImmutableMap;
2323
import static java.util.stream.Collectors.toCollection;
2424

25+
import com.google.adk.Version;
2526
import com.google.cloud.bigquery.BigQuery;
2627
import com.google.cloud.bigquery.BigQueryException;
2728
import com.google.cloud.bigquery.Field;
@@ -136,6 +137,13 @@ final class BigQueryUtils {
136137
"JSON_QUERY(content, '$.args') AS tool_args"))
137138
.buildOrThrow();
138139

140+
private static final String FRAMEWORK_PREFIX = "google-adk-bq-logger-java";
141+
142+
/** Returns the telemetry header value. */
143+
static String getVersionHeaderValue() {
144+
return FRAMEWORK_PREFIX + "/" + Version.JAVA_ADK_VERSION;
145+
}
146+
139147
/** Creates and/or replaces the analytics views in BigQuery. */
140148
static void createAnalyticsViews(BigQuery bigQuery, BigQueryLoggerConfig config) {
141149
for (Map.Entry<String, ImmutableList<String>> entry : EVENT_VIEW_DEFS.entrySet()) {

core/src/main/java/com/google/adk/plugins/agentanalytics/PluginState.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package com.google.adk.plugins.agentanalytics;
22

3+
import static com.google.adk.plugins.agentanalytics.BigQueryUtils.getVersionHeaderValue;
34
import static java.util.concurrent.TimeUnit.MILLISECONDS;
45

56
import com.google.api.gax.core.FixedCredentialsProvider;
67
import com.google.api.gax.retrying.RetrySettings;
8+
import com.google.api.gax.rpc.FixedHeaderProvider;
79
import com.google.cloud.bigquery.storage.v1.BigQueryWriteClient;
810
import com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings;
911
import com.google.cloud.bigquery.storage.v1.StreamWriter;
1012
import com.google.common.annotations.VisibleForTesting;
1113
import com.google.common.base.VerifyException;
1214
import com.google.common.cache.Cache;
1315
import com.google.common.cache.CacheBuilder;
16+
import com.google.common.collect.ImmutableMap;
1417
import java.io.IOException;
1518
import java.util.Collection;
19+
import java.util.UUID;
1620
import java.util.concurrent.ConcurrentHashMap;
1721
import java.util.concurrent.Executors;
1822
import java.util.concurrent.ScheduledExecutorService;
@@ -67,13 +71,14 @@ void markProcessed(String invocationId) {
6771
}
6872

6973
protected BigQueryWriteClient createWriteClient(BigQueryLoggerConfig config) throws IOException {
74+
BigQueryWriteSettings.Builder settingsBuilder =
75+
BigQueryWriteSettings.newBuilder()
76+
.setHeaderProvider(
77+
FixedHeaderProvider.create(ImmutableMap.of("user-agent", getVersionHeaderValue())));
7078
if (config.credentials() != null) {
71-
return BigQueryWriteClient.create(
72-
BigQueryWriteSettings.newBuilder()
73-
.setCredentialsProvider(FixedCredentialsProvider.create(config.credentials()))
74-
.build());
79+
settingsBuilder.setCredentialsProvider(FixedCredentialsProvider.create(config.credentials()));
7580
}
76-
return BigQueryWriteClient.create();
81+
return BigQueryWriteClient.create(settingsBuilder.build());
7782
}
7883

7984
protected StreamWriter createWriter() {
@@ -89,6 +94,7 @@ protected StreamWriter createWriter() {
8994
String streamName = getStreamName(config);
9095
try {
9196
return StreamWriter.newBuilder(streamName, writeClient)
97+
.setTraceId(getVersionHeaderValue() + ":" + UUID.randomUUID())
9298
.setRetrySettings(retrySettings)
9399
.setWriterSchema(BigQuerySchema.getArrowSchema())
94100
.build();

0 commit comments

Comments
 (0)