feat: Split otlp exporter into a new, enabled-by-default feature

This commit is contained in:
Jade Ellis
2025-12-29 23:33:12 +00:00
parent f163264a82
commit d180f5a759
2 changed files with 33 additions and 24 deletions
+7 -3
View File
@@ -63,7 +63,8 @@ standard = [
"systemd", "systemd",
"url_preview", "url_preview",
"zstd_compression", "zstd_compression",
"sentry_telemetry" "sentry_telemetry",
"otlp_telemetry"
] ]
full = [ full = [
"standard", "standard",
@@ -124,12 +125,15 @@ ldap = [
media_thumbnail = [ media_thumbnail = [
"conduwuit-service/media_thumbnail", "conduwuit-service/media_thumbnail",
] ]
perf_measurements = [ otlp_telemetry = [
"dep:opentelemetry", "dep:opentelemetry",
"dep:tracing-flame",
"dep:tracing-opentelemetry", "dep:tracing-opentelemetry",
"dep:opentelemetry_sdk", "dep:opentelemetry_sdk",
"dep:opentelemetry-otlp", "dep:opentelemetry-otlp",
]
perf_measurements = [
"dep:tracing-flame",
"otlp_telemetry",
"conduwuit-core/perf_measurements", "conduwuit-core/perf_measurements",
"conduwuit-core/sentry_telemetry", "conduwuit-core/sentry_telemetry",
] ]
+26 -21
View File
@@ -7,7 +7,7 @@ use conduwuit_core::{
log::{ConsoleFormat, ConsoleWriter, LogLevelReloadHandles, capture, fmt_span}, log::{ConsoleFormat, ConsoleWriter, LogLevelReloadHandles, capture, fmt_span},
result::UnwrapOrErr, result::UnwrapOrErr,
}; };
#[cfg(feature = "perf_measurements")] #[cfg(feature = "otlp_telemetry")]
use opentelemetry::trace::TracerProvider; use opentelemetry::trace::TracerProvider;
use tracing_subscriber::{EnvFilter, Layer, Registry, fmt, layer::SubscriberExt, reload}; use tracing_subscriber::{EnvFilter, Layer, Registry, fmt, layer::SubscriberExt, reload};
@@ -70,25 +70,8 @@ pub(crate) fn init(
subscriber.with(sentry_layer.with_filter(sentry_reload_filter)) subscriber.with(sentry_layer.with_filter(sentry_reload_filter))
}; };
#[cfg(feature = "perf_measurements")] #[cfg(feature = "otlp_telemetry")]
let (subscriber, flame_guard) = { let subscriber = {
let (flame_layer, flame_guard) = if config.tracing_flame {
let flame_filter = EnvFilter::try_new(&config.tracing_flame_filter)
.map_err(|e| err!(Config("tracing_flame_filter", "{e}.")))?;
let (flame_layer, flame_guard) =
tracing_flame::FlameLayer::with_file(&config.tracing_flame_output_path)
.map_err(|e| err!(Config("tracing_flame_output_path", "{e}.")))?;
let flame_layer = flame_layer
.with_empty_samples(false)
.with_filter(flame_filter);
(Some(flame_layer), Some(flame_guard))
} else {
(None, None)
};
let otlp_filter = EnvFilter::try_new(&config.otlp_filter) let otlp_filter = EnvFilter::try_new(&config.otlp_filter)
.map_err(|e| err!(Config("otlp_filter", "{e}.")))?; .map_err(|e| err!(Config("otlp_filter", "{e}.")))?;
@@ -117,7 +100,29 @@ pub(crate) fn init(
Some(telemetry.with_filter(otlp_reload_filter)) Some(telemetry.with_filter(otlp_reload_filter))
}); });
let subscriber = subscriber.with(flame_layer).with(otlp_layer); subscriber.with(otlp_layer)
};
#[cfg(feature = "perf_measurements")]
let (subscriber, flame_guard) = {
let (flame_layer, flame_guard) = if config.tracing_flame {
let flame_filter = EnvFilter::try_new(&config.tracing_flame_filter)
.map_err(|e| err!(Config("tracing_flame_filter", "{e}.")))?;
let (flame_layer, flame_guard) =
tracing_flame::FlameLayer::with_file(&config.tracing_flame_output_path)
.map_err(|e| err!(Config("tracing_flame_output_path", "{e}.")))?;
let flame_layer = flame_layer
.with_empty_samples(false)
.with_filter(flame_filter);
(Some(flame_layer), Some(flame_guard))
} else {
(None, None)
};
let subscriber = subscriber.with(flame_layer);
(subscriber, flame_guard) (subscriber, flame_guard)
}; };