Skip to content

Commit 392ef00

Browse files
make OTLP optional (#56)
1 parent ff73552 commit 392ef00

2 files changed

Lines changed: 23 additions & 11 deletions

File tree

crates/server/src/main.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@ use skardi_server::{create_server, load_server_config, telemetry, CliArgs};
55
use tracing::{error, info};
66
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
77

8-
const DEFAULT_OTLP_ENDPOINT: &str = "http://localhost:4317";
9-
108
#[tokio::main]
119
async fn main() -> Result<()> {
12-
// Initialise OpenTelemetry (traces + metrics) before the tracing subscriber
13-
let otlp_endpoint =
14-
std::env::var("OTLP_ENDPOINT").unwrap_or_else(|_| DEFAULT_OTLP_ENDPOINT.to_string());
15-
let (_telemetry_guard, tracer) = telemetry::init(&otlp_endpoint)?;
10+
// Initialise OpenTelemetry only when OTLP_ENDPOINT is explicitly set.
11+
let otlp_endpoint = std::env::var("OTLP_ENDPOINT").ok();
12+
let (_telemetry_guard, otel_layer) = match telemetry::init(otlp_endpoint.as_deref())? {
13+
Some((guard, tracer)) => (
14+
Some(guard),
15+
Some(tracing_opentelemetry::layer().with_tracer(tracer)),
16+
),
17+
None => (None, None),
18+
};
1619

17-
// Initialize tracing subscriber: fmt to stdout + OTel trace export
20+
// Initialize tracing subscriber: fmt to stdout, plus OTel layer when enabled.
1821
tracing_subscriber::registry()
1922
.with(
2023
tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| "info".into()),
@@ -23,7 +26,7 @@ async fn main() -> Result<()> {
2326
tracing_subscriber::fmt::layer()
2427
.with_span_events(tracing_subscriber::fmt::format::FmtSpan::CLOSE),
2528
)
26-
.with(tracing_opentelemetry::layer().with_tracer(tracer))
29+
.with(otel_layer)
2730
.init();
2831

2932
info!("🚀 Starting Skardi Online Serving Pipeline Server");

crates/server/src/telemetry.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,20 @@ impl Drop for TelemetryGuard {
2626

2727
/// Initialise OpenTelemetry traces and metrics, exporting via OTLP gRPC.
2828
///
29+
/// Returns `None` when `otlp_endpoint` is `None` — OTLP export is disabled
30+
/// and no providers are registered.
31+
///
2932
/// Call this before setting up the tracing subscriber so the returned tracer
3033
/// can be passed into `tracing_opentelemetry::layer()`.
3134
///
3235
/// The returned `TelemetryGuard` must be kept alive until the process exits.
33-
pub fn init(otlp_endpoint: &str) -> Result<(TelemetryGuard, opentelemetry_sdk::trace::Tracer)> {
36+
pub fn init(
37+
otlp_endpoint: Option<&str>,
38+
) -> Result<Option<(TelemetryGuard, opentelemetry_sdk::trace::Tracer)>> {
39+
let Some(otlp_endpoint) = otlp_endpoint else {
40+
return Ok(None);
41+
};
42+
3443
let resource = Resource::new(vec![KeyValue::new(
3544
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
3645
"skardi-server",
@@ -65,11 +74,11 @@ pub fn init(otlp_endpoint: &str) -> Result<(TelemetryGuard, opentelemetry_sdk::t
6574

6675
global::set_meter_provider(meter_provider.clone());
6776

68-
Ok((
77+
Ok(Some((
6978
TelemetryGuard {
7079
tracer_provider,
7180
meter_provider,
7281
},
7382
tracer,
74-
))
83+
)))
7584
}

0 commit comments

Comments
 (0)