Skip to content

Commit c0bc2e8

Browse files
authored
feat(telemetry): Expose OpenTelemetry exporter init arguments in API (#365)
1 parent 02b710c commit c0bc2e8

File tree

2 files changed

+35
-10
lines changed

2 files changed

+35
-10
lines changed

src/strands/telemetry/config.py

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import logging
88
from importlib.metadata import version
9+
from typing import Any
910

1011
import opentelemetry.metrics as metrics_api
1112
import opentelemetry.sdk.metrics as metrics_sdk
@@ -118,22 +119,46 @@ def _initialize_tracer(self) -> None:
118119
)
119120
)
120121

121-
def setup_console_exporter(self) -> "StrandsTelemetry":
122-
"""Set up console exporter for the tracer provider."""
122+
def setup_console_exporter(self, **kwargs: Any) -> "StrandsTelemetry":
123+
"""Set up console exporter for the tracer provider.
124+
125+
Args:
126+
**kwargs: Optional keyword arguments passed directly to
127+
OpenTelemetry's ConsoleSpanExporter initializer.
128+
129+
Returns:
130+
self: Enables method chaining.
131+
132+
This method configures a SimpleSpanProcessor with a ConsoleSpanExporter,
133+
allowing trace data to be output to the console. Any additional keyword
134+
arguments provided will be forwarded to the ConsoleSpanExporter.
135+
"""
123136
try:
124137
logger.info("Enabling console export")
125-
console_processor = SimpleSpanProcessor(ConsoleSpanExporter())
138+
console_processor = SimpleSpanProcessor(ConsoleSpanExporter(**kwargs))
126139
self.tracer_provider.add_span_processor(console_processor)
127140
except Exception as e:
128141
logger.exception("error=<%s> | Failed to configure console exporter", e)
129142
return self
130143

131-
def setup_otlp_exporter(self) -> "StrandsTelemetry":
132-
"""Set up OTLP exporter for the tracer provider."""
144+
def setup_otlp_exporter(self, **kwargs: Any) -> "StrandsTelemetry":
145+
"""Set up OTLP exporter for the tracer provider.
146+
147+
Args:
148+
**kwargs: Optional keyword arguments passed directly to
149+
OpenTelemetry's OTLPSpanExporter initializer.
150+
151+
Returns:
152+
self: Enables method chaining.
153+
154+
This method configures a BatchSpanProcessor with an OTLPSpanExporter,
155+
allowing trace data to be exported to an OTLP endpoint. Any additional
156+
keyword arguments provided will be forwarded to the OTLPSpanExporter.
157+
"""
133158
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
134159

135160
try:
136-
otlp_exporter = OTLPSpanExporter()
161+
otlp_exporter = OTLPSpanExporter(**kwargs)
137162
batch_processor = BatchSpanProcessor(otlp_exporter)
138163
self.tracer_provider.add_span_processor(batch_processor)
139164
logger.info("OTLP exporter configured")

tests/strands/telemetry/test_config.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,9 @@ def test_setup_console_exporter(mock_resource, mock_tracer_provider, mock_consol
168168
telemetry = StrandsTelemetry()
169169
# Set the tracer_provider directly
170170
telemetry.tracer_provider = mock_tracer_provider.return_value
171-
telemetry.setup_console_exporter()
171+
telemetry.setup_console_exporter(foo="bar")
172172

173-
mock_console_exporter.assert_called_once()
173+
mock_console_exporter.assert_called_once_with(foo="bar")
174174
mock_simple_processor.assert_called_once_with(mock_console_exporter.return_value)
175175

176176
mock_tracer_provider.return_value.add_span_processor.assert_called()
@@ -182,9 +182,9 @@ def test_setup_otlp_exporter(mock_resource, mock_tracer_provider, mock_otlp_expo
182182
telemetry = StrandsTelemetry()
183183
# Set the tracer_provider directly
184184
telemetry.tracer_provider = mock_tracer_provider.return_value
185-
telemetry.setup_otlp_exporter()
185+
telemetry.setup_otlp_exporter(foo="bar")
186186

187-
mock_otlp_exporter.assert_called_once()
187+
mock_otlp_exporter.assert_called_once_with(foo="bar")
188188
mock_batch_processor.assert_called_once_with(mock_otlp_exporter.return_value)
189189

190190
mock_tracer_provider.return_value.add_span_processor.assert_called()

0 commit comments

Comments
 (0)