Skip to content

Commit 2b5b498

Browse files
committed
Move tokio-console setup to CLI
1 parent 9ac530e commit 2b5b498

5 files changed

Lines changed: 33 additions & 26 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: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ use quickwit_common::runtimes::scrape_tokio_runtime_metrics;
2626
use quickwit_serve::BuildInfo;
2727
use tracing::error;
2828

29+
#[cfg(feature = "tokio-console")]
30+
const QW_ENABLE_TOKIO_CONSOLE_ENV_KEY: &str = "QW_ENABLE_TOKIO_CONSOLE";
31+
2932
/// The main tokio runtime takes num_cores / 3 threads by default, and can be overridden by the
3033
/// QW_RUNTIME_NUM_THREADS environment variable.
3134
fn get_main_runtime_num_threads() -> usize {
@@ -76,13 +79,28 @@ fn parse_cli_command() -> (CliCommand, bool) {
7679
(command, ansi_colors)
7780
}
7881

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+
7997
async fn main_impl() -> anyhow::Result<()> {
8098
let (command, ansi_colors) = parse_cli_command();
8199

82100
install_default_crypto_ring_provider();
83101

84102
let build_info = BuildInfo::get();
85-
let telemetry_handle = quickwit_telemetry_exporters::init_telemetry(
103+
let telemetry_handle = init_telemetry(
86104
&build_info.version,
87105
command.default_log_level(),
88106
ansi_colors,

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)