diff --git a/Cargo.lock b/Cargo.lock index 55e53db..b4c28bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -466,9 +466,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "bytestring" @@ -533,9 +533,9 @@ dependencies = [ "hyper", "k8s-openapi", "kube", - "opentelemetry", + "opentelemetry 0.28.0", "opentelemetry-otlp", - "opentelemetry_sdk", + "opentelemetry_sdk 0.28.0", "prometheus-client", "schemars", "serde", @@ -1089,9 +1089,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -1640,9 +1640,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "matchers" @@ -1728,9 +1728,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl-probe" @@ -1752,33 +1752,46 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.11", + "tracing", +] + [[package]] name = "opentelemetry-otlp" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" dependencies = [ "async-trait", "futures-core", "http 1.2.0", - "opentelemetry", + "opentelemetry 0.28.0", "opentelemetry-proto", - "opentelemetry_sdk", + "opentelemetry_sdk 0.28.0", "prost", - "thiserror 1.0.69", + "thiserror 2.0.11", "tokio", "tonic", - "tracing", ] [[package]] name = "opentelemetry-proto" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.28.0", + "opentelemetry_sdk 0.28.0", "prost", "tonic", ] @@ -1794,11 +1807,28 @@ dependencies = [ "futures-executor", "futures-util", "glob", - "opentelemetry", + "opentelemetry 0.27.1", "percent-encoding", "rand", - "serde_json", "thiserror 1.0.69", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "opentelemetry 0.28.0", + "percent-encoding", + "rand", + "serde_json", + "thiserror 2.0.11", "tokio", "tokio-stream", "tracing", @@ -1937,9 +1967,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2219,15 +2249,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "schannel" @@ -2495,9 +2525,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.96" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -2858,8 +2888,8 @@ checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053" dependencies = [ "js-sys", "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.27.1", + "opentelemetry_sdk 0.27.1", "smallvec", "tracing", "tracing-core", @@ -2919,9 +2949,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unsafe-libyaml" diff --git a/Cargo.toml b/Cargo.toml index 3624609..9a3184f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,9 +38,9 @@ chrono = { version = "0.4.39", features = ["serde"] } tracing = "0.1.41" tracing-subscriber = { version = "0.3.19", features = ["json", "env-filter"] } tracing-opentelemetry = "0.28.0" -opentelemetry = { version = "0.27.1", features = ["trace"] } -opentelemetry-otlp = { version = "0.27.0", optional = true } -opentelemetry_sdk = { version = "0.27.1", features = ["rt-tokio"] } +opentelemetry = { version = "0.28.0", features = ["trace"] } +opentelemetry-otlp = { version = "0.28.0", optional = true, default-features=false, features = ["trace", "grpc-tonic"] } +opentelemetry_sdk = { version = "0.28.0", features = ["rt-tokio"] } thiserror = "2.0.11" anyhow = "1.0.95" prometheus-client = "0.23.1" diff --git a/src/telemetry.rs b/src/telemetry.rs index 20fdce4..798d07d 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,30 +1,33 @@ #![allow(unused_imports)] // some used only for telemetry feature use opentelemetry::trace::{TraceId, TracerProvider}; -use opentelemetry_sdk::{runtime, trace as sdktrace, trace::Config, Resource}; +use opentelemetry_sdk::{runtime, trace as sdktrace, Resource}; +use sdktrace::{Config, SdkTracerProvider}; use tracing_subscriber::{prelude::*, EnvFilter, Registry}; /// Fetch an opentelemetry::trace::TraceId as hex through the full tracing stack pub fn get_trace_id() -> TraceId { use opentelemetry::trace::TraceContextExt as _; // opentelemetry::Context -> opentelemetry::trace::Span use tracing_opentelemetry::OpenTelemetrySpanExt as _; // tracing::Span to opentelemetry::Context - tracing::Span::current() + TraceId::INVALID + /*tracing::Span::current() .context() .span() .span_context() .trace_id() + */ } #[cfg(feature = "telemetry")] fn resource() -> Resource { use opentelemetry::KeyValue; - Resource::new([ - KeyValue::new("service.name", env!("CARGO_PKG_NAME")), - KeyValue::new("service.version", env!("CARGO_PKG_VERSION")), - ]) + Resource::builder() + .with_service_name(env!("CARGO_PKG_NAME")) + .with_attribute(KeyValue::new("service.version", env!("CARGO_PKG_VERSION"))) + .build() } #[cfg(feature = "telemetry")] -fn init_tracer() -> sdktrace::Tracer { +fn init_tracer() -> SdkTracerProvider { use opentelemetry_otlp::{SpanExporter, WithExportConfig}; let endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Needs an otel collector"); let exporter = SpanExporter::builder() @@ -33,9 +36,9 @@ fn init_tracer() -> sdktrace::Tracer { .build() .unwrap(); - let provider = sdktrace::TracerProvider::builder() - .with_batch_exporter(exporter, runtime::Tokio) + let provider = SdkTracerProvider::builder() .with_resource(resource()) + .with_batch_exporter(exporter) .build(); opentelemetry::global::set_tracer_provider(provider.clone());