use opentelemetry::{global, KeyValue}; use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::{trace as sdktrace, Resource}; use std::env; /// Initialize the OpenTelemetry tracer pub fn init_tracer( ) -> Result> { let endpoint = env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); let tracer = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter( opentelemetry_otlp::new_exporter() .http() .with_endpoint(endpoint), ) .with_trace_config(sdktrace::config().with_resource(Resource::new(vec![ KeyValue::new("service.name", "rtix-core"), ]))) .install_batch(opentelemetry_sdk::runtime::Tokio)?; Ok(tracer) } /// Shutdown the tracer pub fn shutdown_tracer() { global::shutdown_tracer_provider(); }