diff --git a/crates/common/src/observability/mod.rs b/crates/common/src/observability/mod.rs index f112cd455..0fb9d0524 100644 --- a/crates/common/src/observability/mod.rs +++ b/crates/common/src/observability/mod.rs @@ -29,7 +29,7 @@ //! #[tokio::main] //! async fn main() -> Result<(), Box> { //! // Initialize observability infrastructure -//! init_observability("trading_service", "http://localhost:4317").await?; +//! init_observability("trading_service", Some("http://localhost:4317"))?; //! //! // Correlation IDs are automatically propagated via gRPC metadata //! Ok(()) @@ -87,7 +87,8 @@ use crate::error::CommonResult; /// # Arguments /// /// * `service_name` - Name of the service (e.g., "api_gateway", "trading_service") -/// * `otlp_endpoint` - OTLP collector endpoint (e.g., "http://localhost:4317") +/// * `otlp_endpoint` - Optional OTLP collector endpoint (e.g., `Some("http://localhost:4317")`). +/// When `None`, the OTLP tracing layer is disabled and only JSON logging is active. /// /// # Returns /// @@ -100,15 +101,15 @@ use crate::error::CommonResult; /// /// #[tokio::main] /// async fn main() -> Result<(), Box> { -/// init_observability("trading_service", "http://localhost:4317").await?; +/// init_observability("trading_service", Some("http://localhost:4317"))?; /// /// // Service logic here... /// Ok(()) /// } /// ``` -pub async fn init_observability( +pub fn init_observability( service_name: &str, - otlp_endpoint: &str, + otlp_endpoint: Option<&str>, ) -> CommonResult<()> { use tracing_subscriber::prelude::*; @@ -129,8 +130,8 @@ pub async fn init_observability( // the `S` type parameter be inferred correctly by the compiler. let tracing_config = TracingConfig { service_name: service_name.to_string(), - otlp_endpoint: otlp_endpoint.to_string(), - enable_export: true, + otlp_endpoint: otlp_endpoint.unwrap_or_default().to_string(), + enable_export: otlp_endpoint.is_some(), }; let otel_tracer = tracing_config::build_otel_tracer(&tracing_config); let otel_layer = otel_tracer diff --git a/crates/web-gateway/src/main.rs b/crates/web-gateway/src/main.rs index 047af22e3..94b3bf8fc 100644 --- a/crates/web-gateway/src/main.rs +++ b/crates/web-gateway/src/main.rs @@ -24,7 +24,7 @@ async fn main() -> Result<()> { // Initialize observability (JSON logging + OpenTelemetry tracing via OTLP) let otlp_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); - if let Err(e) = common::observability::init_observability("web_gateway", &otlp_endpoint).await { + if let Err(e) = common::observability::init_observability("web_gateway", Some(&otlp_endpoint)) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/api_gateway/src/main.rs b/services/api_gateway/src/main.rs index 5c6d74179..4f5559dfc 100644 --- a/services/api_gateway/src/main.rs +++ b/services/api_gateway/src/main.rs @@ -58,7 +58,7 @@ async fn main() -> Result<()> { // Initialize observability (JSON logging + OpenTelemetry tracing via OTLP) let otlp_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); - if let Err(e) = common::observability::init_observability("api_gateway", &otlp_endpoint).await { + if let Err(e) = common::observability::init_observability("api_gateway", Some(&otlp_endpoint)) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/backtesting_service/src/main.rs b/services/backtesting_service/src/main.rs index bff1a40e4..2ba7d1608 100644 --- a/services/backtesting_service/src/main.rs +++ b/services/backtesting_service/src/main.rs @@ -38,8 +38,8 @@ async fn main() -> Result<()> { .unwrap_or_else(|_| "http://localhost:4317".to_string()); if let Err(e) = common::observability::init_observability( "backtesting_service", - &otlp_endpoint, - ).await { + Some(&otlp_endpoint), + ) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/broker_gateway_service/src/main.rs b/services/broker_gateway_service/src/main.rs index 63ae4f1a4..b9b24f4c7 100644 --- a/services/broker_gateway_service/src/main.rs +++ b/services/broker_gateway_service/src/main.rs @@ -24,7 +24,7 @@ async fn main() -> Result<()> { // Initialize observability (JSON logging + OpenTelemetry tracing via OTLP) let otlp_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); - if let Err(e) = common::observability::init_observability("broker_gateway", &otlp_endpoint).await { + if let Err(e) = common::observability::init_observability("broker_gateway", Some(&otlp_endpoint)) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/data_acquisition_service/src/main.rs b/services/data_acquisition_service/src/main.rs index 032ccb381..e2a37a73c 100644 --- a/services/data_acquisition_service/src/main.rs +++ b/services/data_acquisition_service/src/main.rs @@ -37,7 +37,7 @@ async fn main() -> Result<(), Box> { // Initialize observability (JSON logging + OpenTelemetry tracing via OTLP) let otlp_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); - if let Err(e) = common::observability::init_observability("data_acquisition", &otlp_endpoint).await { + if let Err(e) = common::observability::init_observability("data_acquisition", Some(&otlp_endpoint)) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/ml_training_service/src/main.rs b/services/ml_training_service/src/main.rs index 95b84fe9d..1431f445c 100644 --- a/services/ml_training_service/src/main.rs +++ b/services/ml_training_service/src/main.rs @@ -134,8 +134,8 @@ async fn serve(args: ServeArgs) -> Result<()> { .unwrap_or_else(|_| "http://localhost:4317".to_string()); if let Err(e) = common::observability::init_observability( "ml_training_service", - &otlp_endpoint, - ).await { + Some(&otlp_endpoint), + ) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/trading_agent_service/src/main.rs b/services/trading_agent_service/src/main.rs index 41a11174c..8d0cab5fe 100644 --- a/services/trading_agent_service/src/main.rs +++ b/services/trading_agent_service/src/main.rs @@ -31,7 +31,7 @@ async fn main() -> Result<()> { // Initialize observability (JSON logging + OpenTelemetry tracing via OTLP) let otlp_endpoint = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT") .unwrap_or_else(|_| "http://localhost:4317".to_string()); - if let Err(e) = common::observability::init_observability("trading_agent", &otlp_endpoint).await { + if let Err(e) = common::observability::init_observability("trading_agent", Some(&otlp_endpoint)) { eprintln!("Failed to initialize observability: {}", e); } diff --git a/services/trading_service/src/main.rs b/services/trading_service/src/main.rs index debc9a023..eaec79df6 100644 --- a/services/trading_service/src/main.rs +++ b/services/trading_service/src/main.rs @@ -56,8 +56,8 @@ async fn main() -> Result<()> { .unwrap_or_else(|_| "http://localhost:4317".to_string()); if let Err(e) = common::observability::init_observability( "trading_service", - &otlp_endpoint, - ).await { + Some(&otlp_endpoint), + ) { eprintln!("Failed to initialize observability: {}", e); }