Skip to content

Commit 0839f98

Browse files
authored
feat: add GCP standard otel attributes for python client (#1308)
* chore: add standard otel attributes for GCP python client lib * chore: test fixes * chore: fix tests * chore: test fix * chore: test fixes
1 parent c9d5307 commit 0839f98

File tree

8 files changed

+41
-8
lines changed

8 files changed

+41
-8
lines changed

google/cloud/spanner_v1/_opentelemetry_tracing.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ def trace_call(name, session=None, extra_attributes=None, observability_options=
9393
"net.host.name": SpannerClient.DEFAULT_ENDPOINT,
9494
OTEL_SCOPE_NAME: TRACER_NAME,
9595
OTEL_SCOPE_VERSION: TRACER_VERSION,
96+
# Standard GCP attributes for OTel, attributes are used for internal purpose and are subjected to change
97+
"gcp.client.service": "spanner",
98+
"gcp.client.version": TRACER_VERSION,
99+
"gcp.client.repo": "googleapis/python-spanner",
96100
}
97101

98102
if extra_attributes:

tests/system/test_session_api.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,9 @@ def _make_attributes(db_instance, **kwargs):
345345
"db.url": "spanner.googleapis.com",
346346
"net.host.name": "spanner.googleapis.com",
347347
"db.instance": db_instance,
348+
"gcp.client.service": "spanner",
349+
"gcp.client.version": ot_helpers.LIB_VERSION,
350+
"gcp.client.repo": "googleapis/python-spanner",
348351
}
349352
ot_helpers.enrich_with_otel_scope(attributes)
350353

tests/unit/test__opentelemetry_tracing.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from tests._helpers import (
1616
OpenTelemetryBase,
17+
LIB_VERSION,
1718
HAS_OPENTELEMETRY_INSTALLED,
1819
enrich_with_otel_scope,
1920
)
@@ -64,6 +65,9 @@ def test_trace_call(self):
6465
"db.type": "spanner",
6566
"db.url": "spanner.googleapis.com",
6667
"net.host.name": "spanner.googleapis.com",
68+
"gcp.client.service": "spanner",
69+
"gcp.client.version": LIB_VERSION,
70+
"gcp.client.repo": "googleapis/python-spanner",
6771
}
6872
)
6973
expected_attributes.update(extra_attributes)
@@ -91,6 +95,9 @@ def test_trace_error(self):
9195
"db.type": "spanner",
9296
"db.url": "spanner.googleapis.com",
9397
"net.host.name": "spanner.googleapis.com",
98+
"gcp.client.service": "spanner",
99+
"gcp.client.version": LIB_VERSION,
100+
"gcp.client.repo": "googleapis/python-spanner",
94101
}
95102
)
96103
expected_attributes.update(extra_attributes)

tests/unit/test_batch.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from unittest.mock import MagicMock
1818
from tests._helpers import (
1919
OpenTelemetryBase,
20+
LIB_VERSION,
2021
StatusCode,
2122
enrich_with_otel_scope,
2223
)
@@ -33,6 +34,9 @@
3334
"db.url": "spanner.googleapis.com",
3435
"db.instance": "testing",
3536
"net.host.name": "spanner.googleapis.com",
37+
"gcp.client.service": "spanner",
38+
"gcp.client.version": LIB_VERSION,
39+
"gcp.client.repo": "googleapis/python-spanner",
3640
}
3741
enrich_with_otel_scope(BASE_ATTRIBUTES)
3842

tests/unit/test_pool.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from google.cloud.spanner_v1._opentelemetry_tracing import trace_call
2323
from tests._helpers import (
2424
OpenTelemetryBase,
25+
LIB_VERSION,
2526
StatusCode,
2627
enrich_with_otel_scope,
2728
HAS_OPENTELEMETRY_INSTALLED,
@@ -147,6 +148,9 @@ class TestFixedSizePool(OpenTelemetryBase):
147148
"db.url": "spanner.googleapis.com",
148149
"db.instance": "name",
149150
"net.host.name": "spanner.googleapis.com",
151+
"gcp.client.service": "spanner",
152+
"gcp.client.version": LIB_VERSION,
153+
"gcp.client.repo": "googleapis/python-spanner",
150154
}
151155
enrich_with_otel_scope(BASE_ATTRIBUTES)
152156

@@ -483,6 +487,9 @@ class TestBurstyPool(OpenTelemetryBase):
483487
"db.url": "spanner.googleapis.com",
484488
"db.instance": "name",
485489
"net.host.name": "spanner.googleapis.com",
490+
"gcp.client.service": "spanner",
491+
"gcp.client.version": LIB_VERSION,
492+
"gcp.client.repo": "googleapis/python-spanner",
486493
}
487494
enrich_with_otel_scope(BASE_ATTRIBUTES)
488495

@@ -721,6 +728,9 @@ class TestPingingPool(OpenTelemetryBase):
721728
"db.url": "spanner.googleapis.com",
722729
"db.instance": "name",
723730
"net.host.name": "spanner.googleapis.com",
731+
"gcp.client.service": "spanner",
732+
"gcp.client.version": LIB_VERSION,
733+
"gcp.client.repo": "googleapis/python-spanner",
724734
}
725735
enrich_with_otel_scope(BASE_ATTRIBUTES)
726736

tests/unit/test_session.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import mock
2020
from tests._helpers import (
2121
OpenTelemetryBase,
22+
LIB_VERSION,
2223
StatusCode,
2324
enrich_with_otel_scope,
2425
)
@@ -46,6 +47,9 @@ class TestSession(OpenTelemetryBase):
4647
"db.url": "spanner.googleapis.com",
4748
"db.instance": DATABASE_NAME,
4849
"net.host.name": "spanner.googleapis.com",
50+
"gcp.client.service": "spanner",
51+
"gcp.client.version": LIB_VERSION,
52+
"gcp.client.repo": "googleapis/python-spanner",
4953
}
5054
enrich_with_otel_scope(BASE_ATTRIBUTES)
5155

tests/unit/test_snapshot.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from google.cloud.spanner_v1 import RequestOptions, DirectedReadOptions
2020
from tests._helpers import (
2121
OpenTelemetryBase,
22+
LIB_VERSION,
2223
StatusCode,
2324
HAS_OPENTELEMETRY_INSTALLED,
2425
enrich_with_otel_scope,
@@ -46,6 +47,9 @@
4647
"db.url": "spanner.googleapis.com",
4748
"db.instance": "testing",
4849
"net.host.name": "spanner.googleapis.com",
50+
"gcp.client.service": "spanner",
51+
"gcp.client.version": LIB_VERSION,
52+
"gcp.client.repo": "googleapis/python-spanner",
4953
}
5054
enrich_with_otel_scope(BASE_ATTRIBUTES)
5155

@@ -533,14 +537,7 @@ def test_iteration_w_multiple_span_creation(self):
533537
self.assertEqual(span.name, name)
534538
self.assertEqual(
535539
dict(span.attributes),
536-
enrich_with_otel_scope(
537-
{
538-
"db.type": "spanner",
539-
"db.url": "spanner.googleapis.com",
540-
"db.instance": "testing",
541-
"net.host.name": "spanner.googleapis.com",
542-
}
543-
),
540+
enrich_with_otel_scope(BASE_ATTRIBUTES),
544541
)
545542

546543

tests/unit/test_transaction.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from tests._helpers import (
2525
HAS_OPENTELEMETRY_INSTALLED,
26+
LIB_VERSION,
2627
OpenTelemetryBase,
2728
StatusCode,
2829
enrich_with_otel_scope,
@@ -62,6 +63,9 @@ class TestTransaction(OpenTelemetryBase):
6263
"db.url": "spanner.googleapis.com",
6364
"db.instance": "testing",
6465
"net.host.name": "spanner.googleapis.com",
66+
"gcp.client.service": "spanner",
67+
"gcp.client.version": LIB_VERSION,
68+
"gcp.client.repo": "googleapis/python-spanner",
6569
}
6670
enrich_with_otel_scope(BASE_ATTRIBUTES)
6771

0 commit comments

Comments
 (0)