use opentelemetry::global;
use std::sync::OnceLock;
pub mod export;
pub mod manager;
pub use manager::MetricsManager;
static METRICS_MANAGER: OnceLock<MetricsManager> = OnceLock::new();
pub fn init_metrics() -> MetricsManager {
#[cfg(feature = "prometheus")]
let prometheus_registry = Some(export::prometheus::create_prometheus_registry());
#[cfg(not(feature = "prometheus"))]
let prometheus_registry = None;
#[cfg(feature = "opentelemetry")]
export::open_telemetry::init_opentelemetry_with_otlp("http://localhost:4317");
let otel_meter = global::meter("relay-rl");
let mgr_ref =
METRICS_MANAGER.get_or_init(|| MetricsManager::new(prometheus_registry, otel_meter));
mgr_ref.clone()
}