aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/api/Cargo.toml3
-rw-r--r--src/garage/Cargo.toml4
-rw-r--r--src/garage/main.rs1
-rw-r--r--src/garage/server.rs8
4 files changed, 13 insertions, 3 deletions
diff --git a/src/api/Cargo.toml b/src/api/Cargo.toml
index db77cf38..782054bd 100644
--- a/src/api/Cargo.toml
+++ b/src/api/Cargo.toml
@@ -55,8 +55,9 @@ url = "2.1"
opentelemetry = "0.17"
opentelemetry-prometheus = "0.10"
-opentelemetry-otlp = "0.10"
+opentelemetry-otlp = { version = "0.10", optional = true }
prometheus = "0.13"
[features]
k2v = [ "garage_util/k2v", "garage_model/k2v" ]
+telemetry-otlp = ["opentelemetry-otlp"]
diff --git a/src/garage/Cargo.toml b/src/garage/Cargo.toml
index e19aac50..8573e2fc 100644
--- a/src/garage/Cargo.toml
+++ b/src/garage/Cargo.toml
@@ -56,7 +56,7 @@ netapp = "0.4"
opentelemetry = { version = "0.17", features = [ "rt-tokio" ] }
opentelemetry-prometheus = "0.10"
-opentelemetry-otlp = "0.10"
+opentelemetry-otlp = { version = "0.10", optional = true }
prometheus = "0.13"
[dev-dependencies]
@@ -77,6 +77,8 @@ base64 = "0.13"
default = [ "bundled-libs" ]
kubernetes-discovery = [ "garage_rpc/kubernetes-discovery" ]
k2v = [ "garage_util/k2v", "garage_api/k2v" ]
+# Exporter for the OpenTelemetry Collector.
+telemetry-otlp = [ "opentelemetry-otlp", "garage_api/telemetry-otlp" ]
# NOTE: bundled-libs and system-libs should be treat as mutually exclusive;
# exactly one of them should be enabled.
diff --git a/src/garage/main.rs b/src/garage/main.rs
index 89888884..8f0b377e 100644
--- a/src/garage/main.rs
+++ b/src/garage/main.rs
@@ -8,6 +8,7 @@ mod admin;
mod cli;
mod repair;
mod server;
+#[cfg(feature = "telemetry-otlp")]
mod tracing_setup;
use std::net::SocketAddr;
diff --git a/src/garage/server.rs b/src/garage/server.rs
index 6321357a..d328c044 100644
--- a/src/garage/server.rs
+++ b/src/garage/server.rs
@@ -15,6 +15,7 @@ use garage_web::run_web_server;
use garage_api::k2v::api_server::K2VApiServer;
use crate::admin::*;
+#[cfg(feature = "telemetry-otlp")]
use crate::tracing_setup::*;
async fn wait_from(mut chan: watch::Receiver<bool>) {
@@ -36,9 +37,14 @@ pub async fn run_server(config_file: PathBuf) -> Result<(), Error> {
info!("Initializing Garage main data store...");
let garage = Garage::new(config.clone(), background)?;
- info!("Initialize tracing...");
if let Some(export_to) = config.admin.trace_sink {
+ info!("Initialize tracing...");
+
+ #[cfg(feature = "telemetry-otlp")]
init_tracing(&export_to, garage.system.id)?;
+
+ #[cfg(not(feature = "telemetry-otlp"))]
+ warn!("Garage was built without OTLP exporter, admin.trace_sink is ignored.");
}
info!("Initialize Admin API server and metrics collector...");