diff --git a/opentelemetry-otlp/src/exporter/http/logs.rs b/opentelemetry-otlp/src/exporter/http/logs.rs index 0cba45d99b..5ce94aa7ed 100644 --- a/opentelemetry-otlp/src/exporter/http/logs.rs +++ b/opentelemetry-otlp/src/exporter/http/logs.rs @@ -30,11 +30,12 @@ impl LogExporter for OtlpHttpClient { } let request_uri = request.uri().to_string(); - otel_debug!(name: "HttpLogsClient.CallingExport"); + otel_debug!(name: "HttpLogsClient.ExportStarted"); let response = client .send_bytes(request) .await .map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?; + if !response.status().is_success() { let error = format!( "OpenTelemetry logs export failed. Url: {}, Status Code: {}, Response: {:?}", @@ -42,8 +43,11 @@ impl LogExporter for OtlpHttpClient { response.status().as_u16(), response.body() ); + otel_debug!(name: "HttpLogsClient.ExportFailed", error = &error); return Err(OTelSdkError::InternalFailure(error)); } + + otel_debug!(name: "HttpLogsClient.ExportSucceeded"); Ok(()) } diff --git a/opentelemetry-otlp/src/exporter/http/metrics.rs b/opentelemetry-otlp/src/exporter/http/metrics.rs index b7b7f0363a..f504020528 100644 --- a/opentelemetry-otlp/src/exporter/http/metrics.rs +++ b/opentelemetry-otlp/src/exporter/http/metrics.rs @@ -33,13 +33,30 @@ impl MetricsClient for OtlpHttpClient { request.headers_mut().insert(k.clone(), v.clone()); } - otel_debug!(name: "HttpMetricsClient.CallingExport"); - client - .send_bytes(request) - .await - .map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?; + otel_debug!(name: "HttpMetricsClient.ExportStarted"); + let result = client.send_bytes(request).await; - Ok(()) + match result { + Ok(response) => { + if response.status().is_success() { + otel_debug!(name: "HttpMetricsClient.ExportSucceeded"); + Ok(()) + } else { + let error = format!( + "OpenTelemetry metrics export failed. Status Code: {}, Response: {:?}", + response.status().as_u16(), + response.body() + ); + otel_debug!(name: "HttpMetricsClient.ExportFailed", error = &error); + Err(OTelSdkError::InternalFailure(error)) + } + } + Err(e) => { + let error = format!("{e:?}"); + otel_debug!(name: "HttpMetricsClient.ExportFailed", error = &error); + Err(OTelSdkError::InternalFailure(error)) + } + } } fn shutdown(&self) -> OTelSdkResult { diff --git a/opentelemetry-otlp/src/exporter/http/trace.rs b/opentelemetry-otlp/src/exporter/http/trace.rs index 129a0da7d8..2edae989f6 100644 --- a/opentelemetry-otlp/src/exporter/http/trace.rs +++ b/opentelemetry-otlp/src/exporter/http/trace.rs @@ -42,7 +42,7 @@ impl SpanExporter for OtlpHttpClient { } let request_uri = request.uri().to_string(); - otel_debug!(name: "HttpTracesClient.CallingExport"); + otel_debug!(name: "HttpTracesClient.ExportStarted"); let response = client .send_bytes(request) .await @@ -51,13 +51,15 @@ impl SpanExporter for OtlpHttpClient { if !response.status().is_success() { let error = format!( "OpenTelemetry trace export failed. Url: {}, Status Code: {}, Response: {:?}", - response.status().as_u16(), request_uri, + response.status().as_u16(), response.body() ); + otel_debug!(name: "HttpTracesClient.ExportFailed", error = &error); return Err(OTelSdkError::InternalFailure(error)); } + otel_debug!(name: "HttpTracesClient.ExportSucceeded"); Ok(()) } diff --git a/opentelemetry-otlp/src/exporter/tonic/logs.rs b/opentelemetry-otlp/src/exporter/tonic/logs.rs index 26765ef07a..5334467247 100644 --- a/opentelemetry-otlp/src/exporter/tonic/logs.rs +++ b/opentelemetry-otlp/src/exporter/tonic/logs.rs @@ -72,17 +72,27 @@ impl LogExporter for TonicLogsClient { let resource_logs = group_logs_by_resource_and_scope(batch, &self.resource); - otel_debug!(name: "TonicsLogsClient.CallingExport"); + otel_debug!(name: "TonicLogsClient.ExportStarted"); - client + let result = client .export(Request::from_parts( metadata, extensions, ExportLogsServiceRequest { resource_logs }, )) - .await - .map_err(|e| OTelSdkError::InternalFailure(format!("export error: {:?}", e)))?; - Ok(()) + .await; + + match result { + Ok(_) => { + otel_debug!(name: "TonicLogsClient.ExportSucceeded"); + Ok(()) + } + Err(e) => { + let error = format!("export error: {:?}", e); + otel_debug!(name: "TonicLogsClient.ExportFailed", error = &error); + Err(OTelSdkError::InternalFailure(error)) + } + } } fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult { diff --git a/opentelemetry-otlp/src/exporter/tonic/metrics.rs b/opentelemetry-otlp/src/exporter/tonic/metrics.rs index 1d760bac76..a95205a522 100644 --- a/opentelemetry-otlp/src/exporter/tonic/metrics.rs +++ b/opentelemetry-otlp/src/exporter/tonic/metrics.rs @@ -75,18 +75,27 @@ impl MetricsClient for TonicMetricsClient { )), })?; - otel_debug!(name: "TonicsMetricsClient.CallingExport"); + otel_debug!(name: "TonicMetricsClient.ExportStarted"); - client + let result = client .export(Request::from_parts( metadata, extensions, ExportMetricsServiceRequest::from(metrics), )) - .await - .map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?; + .await; - Ok(()) + match result { + Ok(_) => { + otel_debug!(name: "TonicMetricsClient.ExportSucceeded"); + Ok(()) + } + Err(e) => { + let error = format!("{e:?}"); + otel_debug!(name: "TonicMetricsClient.ExportFailed", error = &error); + Err(OTelSdkError::InternalFailure(error)) + } + } } fn shutdown(&self) -> OTelSdkResult { diff --git a/opentelemetry-otlp/src/exporter/tonic/trace.rs b/opentelemetry-otlp/src/exporter/tonic/trace.rs index 4ddad37b50..b3815b44f2 100644 --- a/opentelemetry-otlp/src/exporter/tonic/trace.rs +++ b/opentelemetry-otlp/src/exporter/tonic/trace.rs @@ -76,17 +76,27 @@ impl SpanExporter for TonicTracesClient { let resource_spans = group_spans_by_resource_and_scope(batch, &self.resource); - otel_debug!(name: "TonicsTracesClient.CallingExport"); + otel_debug!(name: "TonicTracesClient.ExportStarted"); - client + let result = client .export(Request::from_parts( metadata, extensions, ExportTraceServiceRequest { resource_spans }, )) - .await - .map_err(|e| OTelSdkError::InternalFailure(e.to_string()))?; - Ok(()) + .await; + + match result { + Ok(_) => { + otel_debug!(name: "TonicTracesClient.ExportSucceeded"); + Ok(()) + } + Err(e) => { + let error = e.to_string(); + otel_debug!(name: "TonicTracesClient.ExportFailed", error = &error); + Err(OTelSdkError::InternalFailure(error)) + } + } } fn shutdown(&mut self) -> OTelSdkResult {