use std::net::SocketAddr;
use std::time::Duration;
use metrics_exporter_prometheus::PrometheusBuilder;
use metrics_util::MetricKindMask;
use tracing::info;
use quincy::config::MetricsConfig;
use quincy::error::{MetricsError, Result};
pub fn init_metrics(config: &MetricsConfig) -> Result<()> {
let addr = SocketAddr::new(config.address, config.port);
let idle_timeout = match config.idle_timeout_s {
0 => None,
secs => Some(Duration::from_secs(secs)),
};
PrometheusBuilder::new()
.with_http_listener(addr)
.idle_timeout(MetricKindMask::ALL, idle_timeout)
.install()
.map_err(|e| MetricsError::RecorderInstallFailed {
reason: e.to_string(),
})?;
info!("Metrics endpoint listening on http://{addr}/metrics");
Ok(())
}