Expand description
§lambda-otel-utils
lambda-otel-utils
is a Rust library that provides utilities for integrating
OpenTelemetry tracing and metrics with AWS Lambda functions. It simplifies the process of
setting up and configuring OpenTelemetry for use in serverless environments. This crate
is part of the serverless-otlp-forwarder
project, which provides a comprehensive solution for OpenTelemetry telemetry collection
in AWS Lambda environments.
§Main Components
This crate consists of these main modules:
http_tracer_provider
: Offers theHttpTracerProviderBuilder
for configuring and building a custom TracerProvider tailored for Lambda environments.http_meter_provider
: Provides theHttpMeterProviderBuilder
for configuring and building a custom MeterProvider tailored for Lambda environments.otel
: Provides utilities for configuring and building tracing subscribers with support for OpenTelemetry and other layers.subscriber
: Provides utilities for configuring and building tracing subscribers with support for OpenTelemetry and other layers.
§Example
use lambda_otel_utils::{HttpTracerProviderBuilder, HttpMeterProviderBuilder};
use lambda_runtime::{service_fn, Error as LambdaError, LambdaEvent, Runtime};
use lambda_runtime::layers::{OpenTelemetryLayer, OpenTelemetryFaasTrigger};
use aws_lambda_events::event::apigw::ApiGatewayProxyRequest;
use serde_json::Value;
use std::time::Duration;
async fn function_handler(event: LambdaEvent<ApiGatewayProxyRequest>) -> Result<Value, LambdaError> {
Ok(serde_json::json!({"message": "Hello, World!"}))
}
#[tokio::main]
async fn main() -> Result<(), LambdaError> {
let tracer_provider = HttpTracerProviderBuilder::default()
.with_stdout_client()
.enable_global(true)
.build()?;
let meter_provider = HttpMeterProviderBuilder::default()
.with_stdout_client()
.with_meter_name("my-lambda-function")
.with_export_interval(Duration::from_secs(60))
.build()?;
let service = service_fn(function_handler);
let runtime = Runtime::new(service_fn(function_handler))
.layer(
OpenTelemetryLayer::new(|| {
tracer_provider.force_flush();
meter_provider.force_flush();
}
)
.with_trigger(OpenTelemetryFaasTrigger::Http)
);
runtime.run().await
}
This example demonstrates how to set up a comprehensive tracing and metrics configuration using
lambda-otel-utils
in a Lambda function, including both the TracerProvider, MeterProvider, and
the OpenTelemetry layer.
Re-exports§
pub use http_meter_provider::HttpMeterProviderBuilder;
pub use http_tracer_provider::HttpTracerProviderBuilder;
pub use subscriber::create_otel_metrics_layer;
pub use subscriber::create_otel_tracing_layer;
pub use subscriber::init_otel_subscriber;
pub use subscriber::OpenTelemetrySubscriberBuilder;
pub use vended::lambda_runtime_otel::OpenTelemetryFaasTrigger;
pub use vended::lambda_runtime_otel::OpenTelemetryLayer;
Modules§
- http_
meter_ provider - This module provides utilities for configuring and building an OpenTelemetry MeterProvider specifically tailored for use in AWS Lambda environments.
- http_
tracer_ provider - This module provides utilities for configuring and building an OpenTelemetry TracerProvider specifically tailored for use in AWS Lambda environments.
- protocol
- resource
- subscriber
- Utilities for configuring and managing OpenTelemetry tracing subscribers.
- vended
Traits§
- Layer
- Decorates a
Service
, transforming either the request or the response. - Meter
Provider - Provides access to named Meter instances, for instrumenting an application or crate.
- Tracer
Provider - Types that can create instances of
Tracer
.