diff --git a/quickwit/quickwit-cli/src/main.rs b/quickwit/quickwit-cli/src/main.rs index 15dbf1f8dce..9f8662ccf7e 100644 --- a/quickwit/quickwit-cli/src/main.rs +++ b/quickwit/quickwit-cli/src/main.rs @@ -93,9 +93,11 @@ fn init_telemetry( #[cfg(feature = "tokio-console")] { if quickwit_common::get_bool_from_env(QW_ENABLE_TOKIO_CONSOLE_ENV_KEY, false) { + let telemetry_handle = + quickwit_telemetry_exporters::init_meter_provider_only(service_version)?; console_subscriber::init(); return Ok(( - quickwit_telemetry_exporters::TelemetryHandle::default(), + telemetry_handle, quickwit_telemetry_exporters::do_nothing_env_filter_reload_fn(), )); } diff --git a/quickwit/quickwit-telemetry-exporters/src/lib.rs b/quickwit/quickwit-telemetry-exporters/src/lib.rs index 415a910c0da..3b8a93ead22 100644 --- a/quickwit/quickwit-telemetry-exporters/src/lib.rs +++ b/quickwit/quickwit-telemetry-exporters/src/lib.rs @@ -41,7 +41,6 @@ pub fn do_nothing_env_filter_reload_fn() -> EnvFilterReloadFn { Arc::new(|_| Ok(())) } -#[derive(Default)] pub struct TelemetryHandle { tracer_provider: Option, logger_provider: Option, @@ -170,3 +169,17 @@ pub fn init_telemetry( Ok(telemetry_handle) } + +/// Initializes only metrics providers for the process. +/// +/// This is useful when another component owns the tracing subscriber setup but +/// Quickwit still needs to install its metrics recorder. +pub fn init_meter_provider_only(service_version: &str) -> anyhow::Result { + let otlp_config = otlp::OtlpExporterConfig::load_from_env(); + let meter_provider = metrics::init_metrics_provider(service_version, &otlp_config)?; + Ok(TelemetryHandle { + tracer_provider: None, + logger_provider: None, + meter_provider, + }) +}