From 1d8461fc3859aabf3a9f6efd2be0e8b7ba26af4f Mon Sep 17 00:00:00 2001 From: Benjamin Pannell Date: Tue, 23 Apr 2024 23:54:01 +0100 Subject: [PATCH] fix: Resolve some build issues (especially around libssl) --- Cargo.lock | 11 +++++++++++ Cargo.toml | 1 + src/telemetry.rs | 31 +++++++++++++------------------ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 989bfd4..5fdd964 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -507,6 +507,7 @@ dependencies = [ "clap", "futures", "lazy_static", + "openssl-sys", "opentelemetry", "opentelemetry-otlp", "opentelemetry_sdk", @@ -1039,6 +1040,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "300.2.3+3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.96" @@ -1047,6 +1057,7 @@ checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/Cargo.toml b/Cargo.toml index 3fc1e71..0e1de0a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ async-trait = "0.1" clap = { version = "4.5", features = ["derive"] } futures = "0.3" lazy_static = "1.4" +openssl-sys = { version = "0.9", features = ["vendored"] } opentelemetry = { version = "0.22" } opentelemetry-otlp = { version = "0.15", features = ["tls-roots"] } opentelemetry_sdk = { version = "0.22", features = ["rt-tokio"] } diff --git a/src/telemetry.rs b/src/telemetry.rs index 80735a6..83ff2ae 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,6 +1,6 @@ use opentelemetry::global; use opentelemetry_otlp::WithExportConfig; -use opentelemetry_sdk::propagation::TraceContextPropagator; +use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::Sampler}; use tracing::Subscriber; use tracing_subscriber::{prelude::*, registry::LookupSpan, Layer}; @@ -50,7 +50,7 @@ fn load_otlp_headers() -> tonic::metadata::MetadataMap { tracing_metadata } -fn load_trace_sampler() -> opentelemetry_sdk::trace::Sampler { +fn load_trace_sampler() -> Sampler { fn get_trace_ratio() -> f64 { std::env::var("OTEL_TRACES_SAMPLER_ARG") .ok() @@ -58,23 +58,23 @@ fn load_trace_sampler() -> opentelemetry_sdk::trace::Sampler { .unwrap_or(1.0) } - match std::env::var("OTEL_TRACES_SAMPLER") { - Ok(&"always_on") => opentelemetry_sdk::trace::Sampler::AlwaysOn, - Ok(&"always_off") => opentelemetry_sdk::trace::Sampler::AlwaysOff, - Ok(&"traceidratio") => { + std::env::var("OTEL_TRACES_SAMPLER").map(|s| match s.as_str() { + "always_on" => opentelemetry_sdk::trace::Sampler::AlwaysOn, + "always_off" => opentelemetry_sdk::trace::Sampler::AlwaysOff, + "traceidratio" => { opentelemetry_sdk::trace::Sampler::TraceIdRatioBased(get_trace_ratio()) } - Ok(&"parentbased_always_on") => opentelemetry_sdk::trace::Sampler::ParentBased( - opentelemetry_sdk::trace::Sampler::AlwaysOn, + "parentbased_always_on" => opentelemetry_sdk::trace::Sampler::ParentBased( + Box::new(opentelemetry_sdk::trace::Sampler::AlwaysOn), ), - Ok(&"parentbased_always_off") => opentelemetry_sdk::trace::Sampler::ParentBased( - opentelemetry_sdk::trace::Sampler::AlwaysOff, + "parentbased_always_off" => opentelemetry_sdk::trace::Sampler::ParentBased( + Box::new(opentelemetry_sdk::trace::Sampler::AlwaysOff), ), - Ok(&"parentbased_traceidratio") => opentelemetry_sdk::trace::Sampler::ParentBased( - opentelemetry_sdk::trace::Sampler::TraceIdRatioBased(get_trace_ratio()), + "parentbased_traceidratio" => opentelemetry_sdk::trace::Sampler::ParentBased( + Box::new(opentelemetry_sdk::trace::Sampler::TraceIdRatioBased(get_trace_ratio())), ), _ => opentelemetry_sdk::trace::Sampler::AlwaysOn, - } + }).unwrap_or(opentelemetry_sdk::trace::Sampler::AlwaysOn) } fn load_output_layer() -> Box + Send + Sync + 'static> @@ -88,11 +88,6 @@ where #[cfg(debug_assertions)] let tracing_endpoint = Some("https://api.honeycomb.io:443".to_string()); - let sampling_ratio = std::env::var("OTEL_EXPORTER_OTLP_SAMPLING_RATIO") - .ok() - .and_then(|ratio| ratio.parse().ok()) - .unwrap_or(1.0); - if let Some(endpoint) = tracing_endpoint { let metadata = load_otlp_headers(); let tracer = opentelemetry_otlp::new_pipeline()