From bce40dd399b4183dfb429594095b74009c8c856a Mon Sep 17 00:00:00 2001 From: Spencer Judge Date: Fri, 21 Feb 2025 10:30:55 -0800 Subject: [PATCH 1/3] Reduce various info logs to debug --- opentelemetry-sdk/CHANGELOG.md | 17 +++++++------ .../src/logs/batch_log_processor.rs | 6 ++--- opentelemetry-sdk/src/logs/logger_provider.rs | 2 +- .../src/metrics/meter_provider.rs | 8 +++---- .../src/metrics/periodic_reader.rs | 24 +++++++++---------- opentelemetry-sdk/src/trace/span_processor.rs | 7 +++--- 6 files changed, 31 insertions(+), 33 deletions(-) diff --git a/opentelemetry-sdk/CHANGELOG.md b/opentelemetry-sdk/CHANGELOG.md index 4011544db4..9c503dbfc9 100644 --- a/opentelemetry-sdk/CHANGELOG.md +++ b/opentelemetry-sdk/CHANGELOG.md @@ -36,15 +36,12 @@ - **Breaking** The SpanExporter::export() method no longer requires a mutable reference to self. Before: - ```rust - async fn export(&mut self, batch: Vec) -> OTelSdkResult + async fn export(&mut self, batch: Vec) -> OTelSdkResult ``` - After: - ```rust - async fn export(&self, batch: Vec) -> OTelSdkResult + async fn export(&self, batch: Vec) -> OTelSdkResult ``` Custom exporters will need to internally synchronize any mutable state, if applicable. @@ -52,6 +49,8 @@ - Bug Fix: `BatchLogProcessor` now correctly calls `shutdown` on the exporter when its `shutdown` is invoked. +- Reduced some info level logs to debug + ## 0.28.0 Released 2025-Feb-10 @@ -93,7 +92,7 @@ field as metadata, a feature introduced in version 0.1.40. - `Resource::{new,empty,from_detectors,new_with_defaults,from_schema_url,merge,default}`. To create Resources you should only use `Resource::builder()` or `Resource::builder_empty()`. See [#2322](https://github.com/open-telemetry/opentelemetry-rust/pull/2322) for a migration guide. - + Example Usage: ```rust @@ -181,7 +180,7 @@ field as metadata, a feature introduced in version 0.1.40. - Does not support `hyper`, `reqwest` HTTP Clients - Does not support multiple concurrent exports (`with_max_concurrent_exports` is not supported). This existed only for traces. - + If this applies to you, you can get the old behavior back by following steps below: - Enable one or more of the feature flag from below @@ -249,7 +248,7 @@ limit. - *Breaking*: Rename namespaces for InMemoryExporters. (The module is still under "testing" feature flag) before: - + ```rust opentelemetry_sdk::testing::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder}; @@ -260,7 +259,7 @@ limit. ``` now: - + ```rust opentelemetry_sdk::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder}; opentelemetry_sdk::trace::{InMemorySpanExporter, diff --git a/opentelemetry-sdk/src/logs/batch_log_processor.rs b/opentelemetry-sdk/src/logs/batch_log_processor.rs index 8834009d29..01804cbdb2 100644 --- a/opentelemetry-sdk/src/logs/batch_log_processor.rs +++ b/opentelemetry-sdk/src/logs/batch_log_processor.rs @@ -23,7 +23,7 @@ use crate::{ }; use std::sync::mpsc::{self, RecvTimeoutError, SyncSender}; -use opentelemetry::{otel_debug, otel_error, otel_info, otel_warn, InstrumentationScope}; +use opentelemetry::{otel_debug, otel_error, otel_warn, InstrumentationScope}; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use std::{cmp::min, env, sync::Mutex}; @@ -342,7 +342,7 @@ impl BatchLogProcessor { let handle = thread::Builder::new() .name("OpenTelemetry.Logs.BatchProcessor".to_string()) .spawn(move || { - otel_info!( + otel_debug!( name: "BatchLogProcessor.ThreadStarted", interval_in_millisecs = config.scheduled_delay.as_millis(), max_export_batch_size = config.max_export_batch_size, @@ -476,7 +476,7 @@ impl BatchLogProcessor { } } } - otel_info!( + otel_debug!( name: "BatchLogProcessor.ThreadStopped" ); }) diff --git a/opentelemetry-sdk/src/logs/logger_provider.rs b/opentelemetry-sdk/src/logs/logger_provider.rs index 7ec8c8dfd3..f3f030eaeb 100644 --- a/opentelemetry-sdk/src/logs/logger_provider.rs +++ b/opentelemetry-sdk/src/logs/logger_provider.rs @@ -160,7 +160,7 @@ impl LoggerProviderInner { impl Drop for LoggerProviderInner { fn drop(&mut self) { if !self.is_shutdown.load(Ordering::Relaxed) { - otel_info!( + otel_debug!( name: "LoggerProvider.Drop", message = "Last reference of LoggerProvider dropped, initiating shutdown." ); diff --git a/opentelemetry-sdk/src/metrics/meter_provider.rs b/opentelemetry-sdk/src/metrics/meter_provider.rs index 2c76dba3a6..187f41a5b9 100644 --- a/opentelemetry-sdk/src/metrics/meter_provider.rs +++ b/opentelemetry-sdk/src/metrics/meter_provider.rs @@ -110,7 +110,7 @@ impl SdkMeterProvider { /// There is no guaranteed that all telemetry be flushed or all resources have /// been released on error. pub fn shutdown(&self) -> OTelSdkResult { - otel_info!( + otel_debug!( name: "MeterProvider.Shutdown", message = "User initiated shutdown of MeterProvider." ); @@ -153,7 +153,7 @@ impl Drop for SdkMeterProviderInner { message = "MeterProvider was already shut down; drop will not attempt shutdown again." ); } else { - otel_info!( + otel_debug!( name: "MeterProvider.Drop", message = "Last reference of MeterProvider dropped, initiating shutdown." ); @@ -164,7 +164,7 @@ impl Drop for SdkMeterProviderInner { reason = format!("{}", err) ); } else { - otel_info!( + otel_debug!( name: "MeterProvider.Drop.ShutdownCompleted", ); } @@ -310,7 +310,7 @@ impl MeterProviderBuilder { }), }; - otel_info!( + otel_debug!( name: "MeterProvider.Built", ); meter_provider diff --git a/opentelemetry-sdk/src/metrics/periodic_reader.rs b/opentelemetry-sdk/src/metrics/periodic_reader.rs index 79f4e9e802..bacd218d22 100644 --- a/opentelemetry-sdk/src/metrics/periodic_reader.rs +++ b/opentelemetry-sdk/src/metrics/periodic_reader.rs @@ -8,7 +8,7 @@ use std::{ time::{Duration, Instant}, }; -use opentelemetry::{otel_debug, otel_error, otel_info, otel_warn}; +use opentelemetry::{otel_debug, otel_error, otel_warn}; use crate::{ error::{OTelSdkError, OTelSdkResult}, @@ -160,7 +160,7 @@ impl PeriodicReader { .spawn(move || { let mut interval_start = Instant::now(); let mut remaining_interval = interval; - otel_info!( + otel_debug!( name: "PeriodReaderThreadStarted", interval_in_millisecs = interval.as_millis(), ); @@ -190,16 +190,16 @@ impl PeriodicReader { if export_result.is_err() { if response_sender.send(false).is_err() { - otel_info!( + otel_debug!( name: "PeriodReader.Flush.ResponseSendError", - message = "PeriodicReader's flush has failed, but unable to send this info back to caller. + message = "PeriodicReader's flush has failed, but unable to send this info back to caller. This occurs when the caller has timed out waiting for the response. If you see this occuring frequently, consider increasing the flush timeout." ); } } else if response_sender.send(true).is_err() { - otel_info!( + otel_debug!( name: "PeriodReader.Flush.ResponseSendError", - message = "PeriodicReader's flush has completed successfully, but unable to send this info back to caller. + message = "PeriodicReader's flush has completed successfully, but unable to send this info back to caller. This occurs when the caller has timed out waiting for the response. If you see this occuring frequently, consider increasing the flush timeout." ); } @@ -251,16 +251,16 @@ impl PeriodicReader { // tells that it timed out. if export_result.is_err() || shutdown_result.is_err() { if response_sender.send(false).is_err() { - otel_info!( + otel_debug!( name: "PeriodReaderThreadShutdown.ResponseSendError", - message = "PeriodicReader's shutdown has failed, but unable to send this info back to caller. + message = "PeriodicReader's shutdown has failed, but unable to send this info back to caller. This occurs when the caller has timed out waiting for the response. If you see this occuring frequently, consider increasing the shutdown timeout." ); } } else if response_sender.send(true).is_err() { - otel_info!( + otel_debug!( name: "PeriodReaderThreadShutdown.ResponseSendError", - message = "PeriodicReader completed its shutdown, but unable to send this info back to caller. + message = "PeriodicReader completed its shutdown, but unable to send this info back to caller. This occurs when the caller has timed out waiting for the response. If you see this occuring frequently, consider increasing the shutdown timeout." ); } @@ -312,7 +312,7 @@ impl PeriodicReader { } } } - otel_info!( + otel_debug!( name: "PeriodReaderThreadStopped" ); }); @@ -499,7 +499,7 @@ impl MetricReader for PeriodicReader { /// This function SHOULD be obtained from the exporter. /// /// If not configured, the Cumulative temporality SHOULD be used. - /// + /// /// [metric-reader]: https://github.com/open-telemetry/opentelemetry-specification/blob/0a78571045ca1dca48621c9648ec3c832c3c541c/specification/metrics/sdk.md#metricreader fn temporality(&self, kind: InstrumentKind) -> Temporality { kind.temporality_preference(self.inner.temporality(kind)) diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index bb7b59d3f4..12f6b86bf3 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -39,8 +39,7 @@ use crate::resource::Resource; use crate::trace::Span; use crate::trace::{SpanData, SpanExporter}; use opentelemetry::Context; -use opentelemetry::{otel_debug, otel_warn}; -use opentelemetry::{otel_error, otel_info}; +use opentelemetry::{otel_debug, otel_error, otel_warn}; use std::cmp::min; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; @@ -317,7 +316,7 @@ impl BatchSpanProcessor { let handle = thread::Builder::new() .name("OpenTelemetry.Traces.BatchProcessor".to_string()) .spawn(move || { - otel_info!( + otel_debug!( name: "BatchSpanProcessor.ThreadStarted", interval_in_millisecs = config.scheduled_delay.as_millis(), max_export_batch_size = config.max_export_batch_size, @@ -413,7 +412,7 @@ impl BatchSpanProcessor { } } } - otel_info!( + otel_debug!( name: "BatchSpanProcessor.ThreadStopped" ); }) From d7acbc5880b906a38e4cccbee4b287cfa254be18 Mon Sep 17 00:00:00 2001 From: Spencer Judge Date: Fri, 21 Feb 2025 18:26:59 -0800 Subject: [PATCH 2/3] Review comments --- opentelemetry-sdk/src/logs/logger_provider.rs | 2 +- opentelemetry-sdk/src/metrics/meter_provider.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-sdk/src/logs/logger_provider.rs b/opentelemetry-sdk/src/logs/logger_provider.rs index f3f030eaeb..7ec8c8dfd3 100644 --- a/opentelemetry-sdk/src/logs/logger_provider.rs +++ b/opentelemetry-sdk/src/logs/logger_provider.rs @@ -160,7 +160,7 @@ impl LoggerProviderInner { impl Drop for LoggerProviderInner { fn drop(&mut self) { if !self.is_shutdown.load(Ordering::Relaxed) { - otel_debug!( + otel_info!( name: "LoggerProvider.Drop", message = "Last reference of LoggerProvider dropped, initiating shutdown." ); diff --git a/opentelemetry-sdk/src/metrics/meter_provider.rs b/opentelemetry-sdk/src/metrics/meter_provider.rs index 187f41a5b9..1e38f627ce 100644 --- a/opentelemetry-sdk/src/metrics/meter_provider.rs +++ b/opentelemetry-sdk/src/metrics/meter_provider.rs @@ -153,7 +153,7 @@ impl Drop for SdkMeterProviderInner { message = "MeterProvider was already shut down; drop will not attempt shutdown again." ); } else { - otel_debug!( + otel_info!( name: "MeterProvider.Drop", message = "Last reference of MeterProvider dropped, initiating shutdown." ); From 616b2d09c043e55ca19faeac6c4c2fc851e187e0 Mon Sep 17 00:00:00 2001 From: Spencer Judge Date: Mon, 24 Feb 2025 10:49:12 -0800 Subject: [PATCH 3/3] Last review change --- opentelemetry-sdk/src/metrics/periodic_reader.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-sdk/src/metrics/periodic_reader.rs b/opentelemetry-sdk/src/metrics/periodic_reader.rs index bacd218d22..1e9f5bd16f 100644 --- a/opentelemetry-sdk/src/metrics/periodic_reader.rs +++ b/opentelemetry-sdk/src/metrics/periodic_reader.rs @@ -8,7 +8,7 @@ use std::{ time::{Duration, Instant}, }; -use opentelemetry::{otel_debug, otel_error, otel_warn}; +use opentelemetry::{otel_debug, otel_error, otel_info, otel_warn}; use crate::{ error::{OTelSdkError, OTelSdkResult}, @@ -251,7 +251,7 @@ impl PeriodicReader { // tells that it timed out. if export_result.is_err() || shutdown_result.is_err() { if response_sender.send(false).is_err() { - otel_debug!( + otel_info!( name: "PeriodReaderThreadShutdown.ResponseSendError", message = "PeriodicReader's shutdown has failed, but unable to send this info back to caller. This occurs when the caller has timed out waiting for the response. If you see this occuring frequently, consider increasing the shutdown timeout."