Skip to content

Commit 2cb14ea

Browse files
committed
feat: add gcp client attributes in OpenTelemetry traces
1 parent eee333b commit 2cb14ea

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/TraceWrapper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package com.google.cloud.spanner;
1818

19+
import com.google.api.gax.core.GaxProperties;
1920
import com.google.cloud.spanner.Options.TagOption;
2021
import com.google.cloud.spanner.Options.TransactionOption;
2122
import com.google.cloud.spanner.SpannerOptions.TracingFramework;
23+
import com.google.cloud.spanner.spi.v1.GapicSpannerRpc;
2224
import com.google.common.base.MoreObjects;
2325
import io.opencensus.trace.BlankSpan;
2426
import io.opencensus.trace.Span;
@@ -46,6 +48,9 @@ class TraceWrapper {
4648
private static final AttributeKey<List<String>> DB_STATEMENT_ARRAY_KEY =
4749
AttributeKey.stringArrayKey("db.statement");
4850
private static final AttributeKey<String> DB_TABLE_NAME_KEY = AttributeKey.stringKey("db.table");
51+
private static final AttributeKey<String> GCP_CLIENT_SERVICE_KEY = AttributeKey.stringKey("gcp.client.service");
52+
private static final AttributeKey<String> GCP_CLIENT_VERSION_KEY = AttributeKey.stringKey("gcp.client.version");
53+
private static final AttributeKey<String> GCP_CLIENT_REPO_KEY = AttributeKey.stringKey("gcp.client.repo");
4954
private static final AttributeKey<String> THREAD_NAME_KEY = AttributeKey.stringKey("thread.name");
5055

5156
private final Tracer openCensusTracer;
@@ -204,6 +209,9 @@ Attributes createCommonAttributes(DatabaseId db) {
204209
AttributesBuilder builder = Attributes.builder();
205210
builder.put(DB_NAME_KEY, db.getDatabase());
206211
builder.put(INSTANCE_NAME_KEY, db.getInstanceId().getInstance());
212+
builder.put(GCP_CLIENT_SERVICE_KEY, "Spanner");
213+
builder.put(GCP_CLIENT_REPO_KEY, "googleapis/java-spanner");
214+
builder.put(GCP_CLIENT_VERSION_KEY, GaxProperties.getLibraryVersion(TraceWrapper.class));
207215
return builder.build();
208216
}
209217

google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetrySpanTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.junit.Assert.assertThrows;
2222
import static org.junit.Assert.assertTrue;
2323

24+
import com.google.api.gax.core.GaxProperties;
2425
import com.google.api.gax.grpc.testing.LocalChannelProvider;
2526
import com.google.cloud.NoCredentials;
2627
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
@@ -871,6 +872,9 @@ private static void verifySpans(List<String> actualSpanItems, List<String> expec
871872
private static void verifyCommonAttributes(SpanData span) {
872873
assertEquals(span.getAttributes().get(AttributeKey.stringKey("instance.name")), "my-instance");
873874
assertEquals(span.getAttributes().get(AttributeKey.stringKey("db.name")), "my-database");
875+
assertEquals(span.getAttributes().get(AttributeKey.stringKey("gcp.service.name")), "Spanner");
876+
assertEquals(span.getAttributes().get(AttributeKey.stringKey("gcp.client.repo")), "googleapis/java-spanner");
877+
assertEquals(span.getAttributes().get(AttributeKey.stringKey("gcp.client.version")), GaxProperties.getLibraryVersion(TraceWrapper.class));
874878
}
875879

876880
private static void verifyTableAttributes(SpanData span) {

0 commit comments

Comments
 (0)