Skip to content

Commit 5e733ef

Browse files
authored
feat: override service name by OTEL_SERVICE_NAME env (strands-agents#1400)
1 parent 25c46a1 commit 5e733ef

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

src/strands/telemetry/config.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"""
66

77
import logging
8+
import os
89
from importlib.metadata import version
910
from typing import Any
1011

@@ -29,9 +30,11 @@ def get_otel_resource() -> Resource:
2930
Returns:
3031
Resource object with standard service information.
3132
"""
33+
service_name = os.getenv("OTEL_SERVICE_NAME", "strands-agents").strip()
34+
3235
resource = Resource.create(
3336
{
34-
"service.name": "strands-agents",
37+
"service.name": service_name,
3538
"service.version": version("strands-agents"),
3639
"telemetry.sdk.name": "opentelemetry",
3740
"telemetry.sdk.language": "python",
@@ -56,6 +59,7 @@ class StrandsTelemetry:
5659
Environment variables are handled by the underlying OpenTelemetry SDK:
5760
- OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint URL
5861
- OTEL_EXPORTER_OTLP_HEADERS: Headers for OTLP requests
62+
- OTEL_SERVICE_NAME: Overrides resource service name
5963
6064
Examples:
6165
Quick setup with method chaining:

tests/strands/telemetry/test_config.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import pytest
44

5+
import strands.telemetry.config as telemetry_config
56
from strands.telemetry import StrandsTelemetry
67

78

@@ -212,3 +213,21 @@ def test_setup_otlp_exporter_exception(mock_resource, mock_tracer_provider, mock
212213
telemetry.setup_otlp_exporter()
213214

214215
mock_otlp_exporter.assert_called_once()
216+
217+
218+
def test_get_otel_resource_uses_default_service_name(monkeypatch):
219+
monkeypatch.delenv("OTEL_SERVICE_NAME", raising=False)
220+
monkeypatch.setattr(telemetry_config, "version", lambda _: "0.0.0")
221+
222+
resource = telemetry_config.get_otel_resource()
223+
224+
assert resource.attributes.get("service.name") == "strands-agents"
225+
226+
227+
def test_get_otel_resource_respects_otel_service_name(monkeypatch):
228+
monkeypatch.setenv("OTEL_SERVICE_NAME", "my-service")
229+
monkeypatch.setattr(telemetry_config, "version", lambda _: "0.0.0")
230+
231+
resource = telemetry_config.get_otel_resource()
232+
233+
assert resource.attributes.get("service.name") == "my-service"

0 commit comments

Comments
 (0)