RTIX / src /core /telemetry.rs
github-actions
deploy: clean backend production release
c33971d
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<opentelemetry_sdk::trace::Tracer, Box<dyn std::error::Error + Send + Sync + 'static>> {
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();
}