Skip to content

Commit 08397c3

Browse files
vertex-sdk-botcopybara-github
authored andcommitted
chore: set user agent for OTLP http exporter in adk templates
PiperOrigin-RevId: 828027851
1 parent d344858 commit 08397c3

File tree

4 files changed

+34
-0
lines changed

4 files changed

+34
-0
lines changed

tests/unit/vertex_adk/test_agent_engine_templates_adk.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import os
1919
import cloudpickle
2020
import sys
21+
import re
2122
from unittest import mock
2223
from typing import Optional
2324

@@ -769,8 +770,17 @@ def test_tracing_setup(
769770
otlp_span_exporter_mock.assert_called_once_with(
770771
session=mock.ANY,
771772
endpoint="https://telemetry.googleapis.com/v1/traces",
773+
headers=mock.ANY,
772774
)
773775

776+
user_agent = otlp_span_exporter_mock.call_args.kwargs["headers"]["User-Agent"]
777+
assert (
778+
re.fullmatch(
779+
r"Vertex-Agent-Engine\/[\d\.]+ OTel-OTLP-Exporter-Python\/[\d\.]+",
780+
user_agent,
781+
)
782+
is not None
783+
)
774784
assert (
775785
trace_provider_mock.call_args.kwargs["resource"].attributes
776786
== expected_attributes

tests/unit/vertex_adk/test_reasoning_engine_templates_adk.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import importlib
1818
import json
1919
import os
20+
import re
2021
from unittest import mock
2122
from typing import Optional
2223

@@ -723,8 +724,17 @@ def test_tracing_setup(
723724
otlp_span_exporter_mock.assert_called_once_with(
724725
session=mock.ANY,
725726
endpoint="https://telemetry.googleapis.com/v1/traces",
727+
headers=mock.ANY,
726728
)
727729

730+
user_agent = otlp_span_exporter_mock.call_args.kwargs["headers"]["User-Agent"]
731+
assert (
732+
re.fullmatch(
733+
r"Vertex-Agent-Engine\/[\d\.]+ OTel-OTLP-Exporter-Python\/[\d\.]+",
734+
user_agent,
735+
)
736+
is not None
737+
)
728738
assert (
729739
trace_provider_mock.call_args.kwargs["resource"].attributes
730740
== expected_attributes

vertexai/agent_engines/templates/adk.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,10 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
357357

358358
if enable_tracing:
359359
try:
360+
import opentelemetry.exporter.otlp.proto.http.version
360361
import opentelemetry.exporter.otlp.proto.http.trace_exporter
361362
import google.auth.transport.requests
363+
from google.cloud.aiplatform import version as aip_version
362364
except (ImportError, AttributeError):
363365
return _warn_missing_dependency(
364366
"opentelemetry-exporter-otlp-proto-http", needed_for_tracing=True
@@ -367,12 +369,17 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
367369
import google.auth
368370

369371
credentials, _ = google.auth.default()
372+
vertex_sdk_version = aip_version.__version__
373+
otlp_http_version = opentelemetry.exporter.otlp.proto.http.version.__version__
374+
user_agent = f"Vertex-Agent-Engine/{vertex_sdk_version} OTel-OTLP-Exporter-Python/{otlp_http_version}"
375+
370376
span_exporter = (
371377
opentelemetry.exporter.otlp.proto.http.trace_exporter.OTLPSpanExporter(
372378
session=google.auth.transport.requests.AuthorizedSession(
373379
credentials=credentials
374380
),
375381
endpoint="https://telemetry.googleapis.com/v1/traces",
382+
headers={"User-Agent": user_agent},
376383
)
377384
)
378385
span_processor = opentelemetry.sdk.trace.export.BatchSpanProcessor(

vertexai/preview/reasoning_engines/templates/adk.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,10 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
359359

360360
if enable_tracing:
361361
try:
362+
import opentelemetry.exporter.otlp.proto.http.version
362363
import opentelemetry.exporter.otlp.proto.http.trace_exporter
363364
import google.auth.transport.requests
365+
from google.cloud.aiplatform import version as aip_version
364366
except (ImportError, AttributeError):
365367
return _warn_missing_dependency(
366368
"opentelemetry-exporter-otlp-proto-http", needed_for_tracing=True
@@ -369,12 +371,17 @@ def _detect_cloud_resource_id(project_id: str) -> Optional[str]:
369371
import google.auth
370372

371373
credentials, _ = google.auth.default()
374+
vertex_sdk_version = aip_version.__version__
375+
otlp_http_version = opentelemetry.exporter.otlp.proto.http.version.__version__
376+
user_agent = f"Vertex-Agent-Engine/{vertex_sdk_version} OTel-OTLP-Exporter-Python/{otlp_http_version}"
377+
372378
span_exporter = (
373379
opentelemetry.exporter.otlp.proto.http.trace_exporter.OTLPSpanExporter(
374380
session=google.auth.transport.requests.AuthorizedSession(
375381
credentials=credentials
376382
),
377383
endpoint="https://telemetry.googleapis.com/v1/traces",
384+
headers={"User-Agent": user_agent},
378385
)
379386
)
380387
span_processor = opentelemetry.sdk.trace.export.BatchSpanProcessor(

0 commit comments

Comments
 (0)