Skip to content

Commit 52c41f5

Browse files
committed
erge branch 'migrate-quickwit-metrics-to-metrics-rs' of github.com:quickwit-oss/quickwit into migrate-quickwit-metrics-to-metrics-rs
2 parents f9d9a39 + 2b5b498 commit 52c41f5

5 files changed

Lines changed: 49 additions & 45 deletions

File tree

quickwit/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

quickwit/quickwit-cli/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ bytesize = { workspace = true }
2626
chrono = { workspace = true }
2727
clap = { workspace = true }
2828
colored = { workspace = true }
29+
console-subscriber = { workspace = true, optional = true }
2930
dialoguer = { workspace = true }
3031
futures = { workspace = true }
3132
humantime = { workspace = true }
@@ -91,8 +92,8 @@ openssl-support = ["openssl-probe"]
9192
metrics = [ "quickwit-indexing/metrics" ]
9293
# Requires to enable tokio unstable via RUSTFLAGS="--cfg tokio_unstable"
9394
tokio-console = [
95+
"dep:console-subscriber",
9496
"quickwit-common/named_tasks",
95-
"quickwit-telemetry-exporters/tokio-console",
9697
]
9798
release-feature-set = [
9899
"jemalloc",

quickwit/quickwit-cli/src/main.rs

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ use quickwit_cli::metrics::register_build_info_metric;
2424
use quickwit_cli::{busy_detector, install_default_crypto_ring_provider};
2525
use quickwit_common::runtimes::scrape_tokio_runtime_metrics;
2626
use quickwit_serve::BuildInfo;
27-
use quickwit_telemetry_exporters::TelemetryHandle;
2827
use tracing::error;
2928

29+
#[cfg(feature = "tokio-console")]
30+
const QW_ENABLE_TOKIO_CONSOLE_ENV_KEY: &str = "QW_ENABLE_TOKIO_CONSOLE";
31+
3032
/// The main tokio runtime takes num_cores / 3 threads by default, and can be overridden by the
3133
/// QW_RUNTIME_NUM_THREADS environment variable.
3234
fn get_main_runtime_num_threads() -> usize {
@@ -46,8 +48,6 @@ fn main() -> anyhow::Result<()> {
4648
openssl_probe::init_openssl_env_vars()
4749
};
4850

49-
let (command, ansi_colors) = parse_cli_command();
50-
5151
let main_runtime_num_threads: usize = get_main_runtime_num_threads();
5252
let rt = tokio::runtime::Builder::new_multi_thread()
5353
.enable_all()
@@ -58,22 +58,7 @@ fn main() -> anyhow::Result<()> {
5858
.build()
5959
.context("failed to start main Tokio runtime")?;
6060

61-
rt.block_on(async move {
62-
install_default_crypto_ring_provider();
63-
64-
let build_info = BuildInfo::get();
65-
let telemetry_handle = quickwit_telemetry_exporters::init_telemetry(
66-
&build_info.version,
67-
command.default_log_level(),
68-
ansi_colors,
69-
)?;
70-
register_build_info_metric(build_info);
71-
72-
let runtime_handle = tokio::runtime::Handle::current();
73-
scrape_tokio_runtime_metrics(&runtime_handle, "main");
74-
75-
main_impl(command, telemetry_handle).await
76-
})
61+
rt.block_on(main_impl())
7762
}
7863

7964
fn parse_cli_command() -> (CliCommand, bool) {
@@ -94,7 +79,37 @@ fn parse_cli_command() -> (CliCommand, bool) {
9479
(command, ansi_colors)
9580
}
9681

97-
async fn main_impl(command: CliCommand, telemetry_handle: TelemetryHandle) -> anyhow::Result<()> {
82+
fn init_telemetry(
83+
service_version: &str,
84+
level: tracing::Level,
85+
ansi_colors: bool,
86+
) -> anyhow::Result<quickwit_telemetry_exporters::TelemetryHandle> {
87+
#[cfg(feature = "tokio-console")]
88+
{
89+
if quickwit_common::get_bool_from_env(QW_ENABLE_TOKIO_CONSOLE_ENV_KEY, false) {
90+
console_subscriber::init();
91+
return Ok(quickwit_telemetry_exporters::TelemetryHandle::default());
92+
}
93+
}
94+
quickwit_telemetry_exporters::init_telemetry(service_version, level, ansi_colors)
95+
}
96+
97+
async fn main_impl() -> anyhow::Result<()> {
98+
let (command, ansi_colors) = parse_cli_command();
99+
100+
install_default_crypto_ring_provider();
101+
102+
let build_info = BuildInfo::get();
103+
let telemetry_handle = init_telemetry(
104+
&build_info.version,
105+
command.default_log_level(),
106+
ansi_colors,
107+
)?;
108+
register_build_info_metric(build_info);
109+
110+
let runtime_handle = tokio::runtime::Handle::current();
111+
scrape_tokio_runtime_metrics(&runtime_handle, "main");
112+
98113
#[cfg(feature = "jemalloc")]
99114
start_jemalloc_metrics_loop();
100115

quickwit/quickwit-telemetry-exporters/Cargo.toml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ license.workspace = true
1313
[dependencies]
1414
anyhow = { workspace = true }
1515
backtrace = { workspace = true, optional = true }
16-
console-subscriber = { workspace = true, optional = true }
1716
metrics = { workspace = true }
1817
metrics-exporter-otel = { workspace = true }
1918
metrics-exporter-prometheus = { workspace = true }
@@ -36,8 +35,3 @@ jemalloc-profiled = [
3635
"dep:backtrace",
3736
"quickwit-common/jemalloc-profiled",
3837
]
39-
# Requires to enable tokio unstable via RUSTFLAGS="--cfg tokio_unstable"
40-
tokio-console = [
41-
"dep:console-subscriber",
42-
"quickwit-common/named_tasks",
43-
]

quickwit/quickwit-telemetry-exporters/src/lib.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ use opentelemetry_sdk::logs::SdkLoggerProvider;
2424
use opentelemetry_sdk::metrics::SdkMeterProvider as SdkMetricsProvider;
2525
use opentelemetry_sdk::propagation::TraceContextPropagator;
2626
use opentelemetry_sdk::trace::SdkTracerProvider;
27-
#[cfg(feature = "tokio-console")]
28-
use quickwit_common::get_bool_from_env;
2927
use tracing::Level;
3028
use tracing_subscriber::EnvFilter;
3129
use tracing_subscriber::layer::SubscriberExt;
@@ -36,9 +34,6 @@ mod metrics;
3634
mod otlp;
3735
pub mod prometheus;
3836

39-
#[cfg(feature = "tokio-console")]
40-
const QW_ENABLE_TOKIO_CONSOLE_ENV_KEY: &str = "QW_ENABLE_TOKIO_CONSOLE";
41-
4237
pub type EnvFilterReloadFn = Arc<dyn Fn(&str) -> anyhow::Result<()> + Send + Sync>;
4338

4439
pub fn do_nothing_env_filter_reload_fn() -> EnvFilterReloadFn {
@@ -52,6 +47,17 @@ pub struct TelemetryHandle {
5247
meter_provider: Option<SdkMetricsProvider>,
5348
}
5449

50+
impl Default for TelemetryHandle {
51+
fn default() -> Self {
52+
TelemetryHandle {
53+
env_filter_reload_fn: do_nothing_env_filter_reload_fn(),
54+
tracer_provider: None,
55+
logger_provider: None,
56+
meter_provider: None,
57+
}
58+
}
59+
}
60+
5561
impl TelemetryHandle {
5662
pub fn env_filter_reload_fn(&self) -> EnvFilterReloadFn {
5763
self.env_filter_reload_fn.clone()
@@ -104,18 +110,6 @@ pub fn init_telemetry(
104110

105111
let meter_provider = metrics::init_metrics_provider(service_version, &otlp_config)?;
106112

107-
#[cfg(feature = "tokio-console")]
108-
{
109-
if get_bool_from_env(QW_ENABLE_TOKIO_CONSOLE_ENV_KEY, false) {
110-
console_subscriber::init();
111-
return Ok(TelemetryHandle {
112-
env_filter_reload_fn: do_nothing_env_filter_reload_fn(),
113-
tracer_provider: None,
114-
logger_provider: None,
115-
meter_provider,
116-
});
117-
}
118-
}
119113
global::set_text_map_propagator(TraceContextPropagator::new());
120114

121115
let event_format = logs::EventFormat::get_from_env();

0 commit comments

Comments
 (0)