pub struct TelemetryConfigBuilder { /* private fields */ }Expand description
Builder for configuring OpenTelemetry telemetry initialization.
This builder provides a fluent interface for customizing telemetry configuration:
- Custom resources for additional attributes
- Custom span processors for different export strategies
- Custom library name for instrumentation
- Control over formatting layer for logs
§Environment Variables
Several environment variables affect the configuration:
OTEL_SERVICE_NAME: Service name for spansAWS_LAMBDA_FUNCTION_NAME: Fallback service nameOTEL_RESOURCE_ATTRIBUTES: Additional resource attributesLAMBDA_SPAN_PROCESSOR_QUEUE_SIZE: Span buffer sizeOTLP_STDOUT_SPAN_EXPORTER_COMPRESSION_LEVEL: Export compressionLAMBDA_TRACING_ENABLE_FMT_LAYER: Enable formatting layer (default: false)
§Example
use lambda_otel_lite::TelemetryConfigBuilder;
use opentelemetry_sdk::trace::SimpleSpanProcessor;
use otlp_stdout_span_exporter::OtlpStdoutSpanExporter;
let config = TelemetryConfigBuilder::default()
.with_library_name("my-lambda")
.with_fmt_layer(true)
.with_span_processor(SimpleSpanProcessor::new(
Box::new(OtlpStdoutSpanExporter::default())
))
.build();Implementations§
Source§impl TelemetryConfigBuilder
impl TelemetryConfigBuilder
Sourcepub fn with_resource(self, resource: Resource) -> Self
pub fn with_resource(self, resource: Resource) -> Self
Add a custom resource to the tracer provider.
If not set, the default Lambda resource will be used, which includes:
- AWS Lambda environment attributes (region, function name, etc.)
- OTEL_SERVICE_NAME or AWS_LAMBDA_FUNCTION_NAME as service.name
- Any attributes from OTEL_RESOURCE_ATTRIBUTES environment variable
Sourcepub fn with_span_processor<T>(self, processor: T) -> Selfwhere
T: SpanProcessor + 'static,
pub fn with_span_processor<T>(self, processor: T) -> Selfwhere
T: SpanProcessor + 'static,
Add a span processor to the tracer provider.
Note: Adding any processor will disable the default Lambda processor pipeline. If you need multiple processors, call this method multiple times.
§Example
use lambda_otel_lite::TelemetryConfigBuilder;
use opentelemetry_sdk::trace::SimpleSpanProcessor;
use otlp_stdout_span_exporter::OtlpStdoutSpanExporter;
let config = TelemetryConfigBuilder::default()
.with_span_processor(SimpleSpanProcessor::new(Box::new(OtlpStdoutSpanExporter::default())))
.build();Sourcepub fn with_library_name<S>(self, name: S) -> Self
pub fn with_library_name<S>(self, name: S) -> Self
Set a custom library name for the tracer.
If not set, defaults to the package name (“lambda-otel-lite”).
This value is used as the library.name attribute in spans.
Sourcepub fn with_fmt_layer(self, enable: bool) -> Self
pub fn with_fmt_layer(self, enable: bool) -> Self
Enable or disable the formatting layer for logs.
When enabled, trace data will also appear in application logs. Defaults to false if not set, can be overridden by LAMBDA_TRACING_ENABLE_FMT_LAYER.
Sourcepub fn build(self) -> TelemetryConfig
pub fn build(self) -> TelemetryConfig
Build the final telemetry configuration.
If no resource was set, uses the default Lambda resource. If no processors were added, uses the default Lambda processor pipeline. If fmt_layer not set, checks LAMBDA_TRACING_ENABLE_FMT_LAYER environment variable.
Trait Implementations§
Source§impl Default for TelemetryConfigBuilder
impl Default for TelemetryConfigBuilder
Source§fn default() -> TelemetryConfigBuilder
fn default() -> TelemetryConfigBuilder
Auto Trait Implementations§
impl Freeze for TelemetryConfigBuilder
impl !RefUnwindSafe for TelemetryConfigBuilder
impl Send for TelemetryConfigBuilder
impl Sync for TelemetryConfigBuilder
impl Unpin for TelemetryConfigBuilder
impl !UnwindSafe for TelemetryConfigBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request