Expand description
Modern OpenTelemetry observability helpers for Rust.
Provides composable configuration, dynamic layer composition, and async-aware shutdown for traces, logs, and metrics.
§Quick Start
ⓘ
use otel_rs::OtelConfig;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut guard = OtelConfig::builder()
.service_name("my-service")
.service_version("1.0.0")
.allow_crate("my_service")
.init()
.await?;
tracing::info!("Hello from my-service!");
// Graceful async shutdown (or let Drop handle it).
guard.shutdown().await?;
Ok(())
}§Error Recording
ⓘ
use otel_rs::{SpanExt, InstrumentedResult};
#[tracing::instrument]
async fn work() -> Result<(), MyError> {
// Automatically records errors to the current span:
fallible_call().await.record_to_span()?;
// Or use the macro:
let val = otel_rs::try_record_return!(another_call().await);
Ok(())
}Re-exports§
pub use config::ExporterConfig;pub use config::ExporterConfigBuilder;pub use config::LogLevel;pub use config::MetricsConfig;pub use config::MetricsConfigBuilder;pub use config::OtelConfig;pub use config::OtelConfigBuilder;pub use config::OtlpCredentials;pub use config::OtlpProtocol;pub use config::OutputFormat;pub use config::SamplingStrategy;pub use config::TracingConfig;pub use config::TracingConfigBuilder;pub use error::ErrorContext;pub use error::OtelError;pub use error::OtelResult;pub use filter::FilterBuilder;pub use metrics::Metrics;pub use span::InstrumentedResult;pub use span::SpanExt;pub use span::TimingContext;
Modules§
- config
- Configuration for the observability stack.
- error
- Error types for the observability library.
- filter
- Allow-list based log filtering.
- macros
- Convenience macros for instrumented operations.
- metrics
- Thin metrics wrapper around the OpenTelemetry SDK.
- span
- Span extensions for error recording and status management.
Macros§
- try_
record - Record any error from an expression to the current span.
- try_
record_ return - Record any error and early-return on
Err(like?with span recording).
Structs§
- Otel
Guard - Guard managing the lifecycle of the observability stack.
Functions§
- init_
with_ config - Initialize the observability stack with a pre-built configuration.