From ee0d2bceac1b082cd589044be0895c86082db5a6 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Sat, 2 Aug 2025 12:47:06 -0700 Subject: [PATCH 1/5] fix: Improved logging for OTLP Tonic Exporter --- opentelemetry-otlp/src/exporter/tonic/logs.rs | 20 ++++++++++++---- .../src/exporter/tonic/metrics.rs | 24 ++++++++++++++----- .../src/exporter/tonic/trace.rs | 20 ++++++++++++---- 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index 9f8b9d8a6d..b6e8eeb36c 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -63,7 +63,15 @@ impl LogExporter for TonicLogsClient { let (m, e, _) = inner .interceptor .call(Request::new(())) - .map_err(|e| OTelSdkError::InternalFailure(format!("error: {e:?}")))? + .map_err(|e| { + otel_debug!( + name: "TonicLogsClient.InterceptorFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + OTelSdkError::InternalFailure("Logs export failed in interceptor".into()) + })? .into_parts(); (inner.client.clone(), m, e) } @@ -88,9 +96,13 @@ impl LogExporter for TonicLogsClient { Ok(()) } Err(e) => { - let error = format!("export error: {e:?}"); - otel_debug!(name: "TonicLogsClient.ExportFailed", error = &error); - Err(OTelSdkError::InternalFailure(error)) + otel_debug!( + name: "TonicLogsClient.ExportFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + Err(OTelSdkError::InternalFailure("Logs export failed".into())) } } } diff --git a/opentelemetry-otlp/src/exporter/tonic/metrics.rs b/opentelemetry-otlp/src/exporter/tonic/metrics.rs index 13813c7305..9aab764a17 100644 --- a/opentelemetry-otlp/src/exporter/tonic/metrics.rs +++ b/opentelemetry-otlp/src/exporter/tonic/metrics.rs @@ -63,9 +63,15 @@ impl MetricsClient for TonicMetricsClient { .interceptor .call(Request::new(())) .map_err(|e| { - OTelSdkError::InternalFailure(format!( - "unexpected status while exporting {e:?}" - )) + otel_debug!( + name: "TonicMetricsClient.InterceptorFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + OTelSdkError::InternalFailure( + "Metrics export failed in interceptor".into(), + ) })? .into_parts(); Ok((inner.client.clone(), m, e)) @@ -91,9 +97,15 @@ impl MetricsClient for TonicMetricsClient { Ok(()) } Err(e) => { - let error = format!("{e:?}"); - otel_debug!(name: "TonicMetricsClient.ExportFailed", error = &error); - Err(OTelSdkError::InternalFailure(error)) + otel_debug!( + name: "TonicMetricsClient.ExportFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + Err(OTelSdkError::InternalFailure( + "Metrics export failed".into(), + )) } } } diff --git a/opentelemetry-otlp/src/exporter/tonic/trace.rs b/opentelemetry-otlp/src/exporter/tonic/trace.rs index 4378c37a04..98bb2d44e3 100644 --- a/opentelemetry-otlp/src/exporter/tonic/trace.rs +++ b/opentelemetry-otlp/src/exporter/tonic/trace.rs @@ -67,7 +67,15 @@ impl SpanExporter for TonicTracesClient { .lock() .await // tokio::sync::Mutex doesn't return a poisoned error, so we can safely use the interceptor here .call(Request::new(())) - .map_err(|e| OTelSdkError::InternalFailure(format!("error: {e:?}")))? + .map_err(|e| { + otel_debug!( + name: "TonicTracesClient.InterceptorFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + OTelSdkError::InternalFailure("Traces export failed in interceptor".into()) + })? .into_parts(); (inner.client.clone(), m, e) } @@ -92,9 +100,13 @@ impl SpanExporter for TonicTracesClient { Ok(()) } Err(e) => { - let error = e.to_string(); - otel_debug!(name: "TonicTracesClient.ExportFailed", error = &error); - Err(OTelSdkError::InternalFailure(error)) + otel_debug!( + name: "TonicTracesClient.ExportFailed", + grpc_code = format!("{:?}", e.code()), + grpc_message = e.message(), + grpc_details = format!("{:?}", e.details()) + ); + Err(OTelSdkError::InternalFailure("Traces export failed".into())) } } } From 9ad29b6b3e376541b608427eefbe089ed9d72721 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Tue, 5 Aug 2025 20:11:37 -0700 Subject: [PATCH 2/5] just e.code --- opentelemetry-otlp/src/exporter/tonic/logs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index b6e8eeb36c..6ed409c2c6 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -66,7 +66,7 @@ impl LogExporter for TonicLogsClient { .map_err(|e| { otel_debug!( name: "TonicLogsClient.InterceptorFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); From 24c7fe2e8b2de60cd7e8c971fcae4e34332d5afe Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Tue, 5 Aug 2025 20:15:10 -0700 Subject: [PATCH 3/5] pr suggests --- opentelemetry-otlp/src/exporter/tonic/logs.rs | 2 +- opentelemetry-otlp/src/exporter/tonic/metrics.rs | 4 ++-- opentelemetry-otlp/src/exporter/tonic/trace.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index 6ed409c2c6..1205f68d15 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -98,7 +98,7 @@ impl LogExporter for TonicLogsClient { Err(e) => { otel_debug!( name: "TonicLogsClient.ExportFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); diff --git a/opentelemetry-otlp/src/exporter/tonic/metrics.rs b/opentelemetry-otlp/src/exporter/tonic/metrics.rs index 9aab764a17..e044ffd1a9 100644 --- a/opentelemetry-otlp/src/exporter/tonic/metrics.rs +++ b/opentelemetry-otlp/src/exporter/tonic/metrics.rs @@ -65,7 +65,7 @@ impl MetricsClient for TonicMetricsClient { .map_err(|e| { otel_debug!( name: "TonicMetricsClient.InterceptorFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); @@ -99,7 +99,7 @@ impl MetricsClient for TonicMetricsClient { Err(e) => { otel_debug!( name: "TonicMetricsClient.ExportFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); diff --git a/opentelemetry-otlp/src/exporter/tonic/trace.rs b/opentelemetry-otlp/src/exporter/tonic/trace.rs index 98bb2d44e3..71ada97975 100644 --- a/opentelemetry-otlp/src/exporter/tonic/trace.rs +++ b/opentelemetry-otlp/src/exporter/tonic/trace.rs @@ -70,7 +70,7 @@ impl SpanExporter for TonicTracesClient { .map_err(|e| { otel_debug!( name: "TonicTracesClient.InterceptorFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); @@ -102,7 +102,7 @@ impl SpanExporter for TonicTracesClient { Err(e) => { otel_debug!( name: "TonicTracesClient.ExportFailed", - grpc_code = format!("{:?}", e.code()), + grpc_code = e.code(), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); From 65fab0855221e239f245bc9a6c9e05b3fb7670dc Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Tue, 5 Aug 2025 20:17:52 -0700 Subject: [PATCH 4/5] Revert "pr suggests" This reverts commit 24c7fe2e8b2de60cd7e8c971fcae4e34332d5afe. --- opentelemetry-otlp/src/exporter/tonic/logs.rs | 2 +- opentelemetry-otlp/src/exporter/tonic/metrics.rs | 4 ++-- opentelemetry-otlp/src/exporter/tonic/trace.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index 1205f68d15..6ed409c2c6 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -98,7 +98,7 @@ impl LogExporter for TonicLogsClient { Err(e) => { otel_debug!( name: "TonicLogsClient.ExportFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); diff --git a/opentelemetry-otlp/src/exporter/tonic/metrics.rs b/opentelemetry-otlp/src/exporter/tonic/metrics.rs index e044ffd1a9..9aab764a17 100644 --- a/opentelemetry-otlp/src/exporter/tonic/metrics.rs +++ b/opentelemetry-otlp/src/exporter/tonic/metrics.rs @@ -65,7 +65,7 @@ impl MetricsClient for TonicMetricsClient { .map_err(|e| { otel_debug!( name: "TonicMetricsClient.InterceptorFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); @@ -99,7 +99,7 @@ impl MetricsClient for TonicMetricsClient { Err(e) => { otel_debug!( name: "TonicMetricsClient.ExportFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); diff --git a/opentelemetry-otlp/src/exporter/tonic/trace.rs b/opentelemetry-otlp/src/exporter/tonic/trace.rs index 71ada97975..98bb2d44e3 100644 --- a/opentelemetry-otlp/src/exporter/tonic/trace.rs +++ b/opentelemetry-otlp/src/exporter/tonic/trace.rs @@ -70,7 +70,7 @@ impl SpanExporter for TonicTracesClient { .map_err(|e| { otel_debug!( name: "TonicTracesClient.InterceptorFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); @@ -102,7 +102,7 @@ impl SpanExporter for TonicTracesClient { Err(e) => { otel_debug!( name: "TonicTracesClient.ExportFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) ); From b08f65886f42f631ca685494cad0c5d149bc294d Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Tue, 5 Aug 2025 20:18:06 -0700 Subject: [PATCH 5/5] Revert "just e.code" This reverts commit 9ad29b6b3e376541b608427eefbe089ed9d72721. --- opentelemetry-otlp/src/exporter/tonic/logs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index 6ed409c2c6..b6e8eeb36c 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -66,7 +66,7 @@ impl LogExporter for TonicLogsClient { .map_err(|e| { otel_debug!( name: "TonicLogsClient.InterceptorFailed", - grpc_code = e.code(), + grpc_code = format!("{:?}", e.code()), grpc_message = e.message(), grpc_details = format!("{:?}", e.details()) );