diff --git a/crates/factor-observe/src/lib.rs b/crates/factor-observe/src/lib.rs index 770338e69..71d8979d8 100644 --- a/crates/factor-observe/src/lib.rs +++ b/crates/factor-observe/src/lib.rs @@ -146,7 +146,7 @@ impl ObserveContext { }; // If there are no active guest spans then there is nothing to do - let Some(current_span_id) = state.active_spans.last() else { + let Some(active_span) = state.active_spans.last() else { return; }; @@ -166,7 +166,7 @@ impl ObserveContext { // Now reparent the current span to the last active guest span let span_context = state .guest_spans - .get(*current_span_id) + .get(*active_span) .unwrap() .inner .span_context() diff --git a/crates/telemetry/src/metrics.rs b/crates/telemetry/src/metrics.rs index 200a786a2..58e62826f 100644 --- a/crates/telemetry/src/metrics.rs +++ b/crates/telemetry/src/metrics.rs @@ -1,6 +1,7 @@ use std::time::Duration; use anyhow::{bail, Result}; +use opentelemetry::global; use opentelemetry_otlp::MetricsExporterBuilder; use opentelemetry_sdk::{ metrics::{ @@ -57,6 +58,8 @@ pub(crate) fn otel_metrics_layer LookupSpan<'span>>( .with_resource(resource) .build(); + global::set_meter_provider(meter_provider.clone()); + Ok(MetricsLayer::new(meter_provider)) } diff --git a/crates/telemetry/src/traces.rs b/crates/telemetry/src/traces.rs index 06eb60beb..9ec38f2b4 100644 --- a/crates/telemetry/src/traces.rs +++ b/crates/telemetry/src/traces.rs @@ -1,7 +1,7 @@ use std::time::Duration; use anyhow::bail; -use opentelemetry::trace::TracerProvider; +use opentelemetry::{global, trace::TracerProvider}; use opentelemetry_otlp::SpanExporterBuilder; use opentelemetry_sdk::{ resource::{EnvResourceDetector, TelemetryResourceDetector}, @@ -50,6 +50,8 @@ pub(crate) fn otel_tracing_layer LookupSpan<'span>>( .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource(resource)) .install_batch(opentelemetry_sdk::runtime::Tokio)?; + global::set_tracer_provider(tracer_provider.clone()); + let env_filter = match EnvFilter::try_from_env("SPIN_OTEL_TRACING_LEVEL") { Ok(filter) => filter, // If it isn't set or it fails to parse default to info diff --git a/tests/integration.rs b/tests/integration.rs index d7c83371f..4a6101ddf 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1430,7 +1430,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1473,7 +1473,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1543,7 +1543,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1608,7 +1608,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1669,7 +1669,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1731,7 +1731,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1797,7 +1797,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1855,7 +1855,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(()) @@ -1912,7 +1912,7 @@ mod otel_integration_tests { }, ServicesConfig::none(), |env| { - env.set_env_var("OTEL_EXPORTER_OTLP_ENDPOINT", collector_endpoint); + env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", collector_endpoint); env.set_env_var("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL", "grpc"); env.set_env_var("OTEL_BSP_SCHEDULE_DELAY", "5"); Ok(())