From c47d1c48c13c432b80fe9a435b6510d89cbab2e2 Mon Sep 17 00:00:00 2001 From: Caleb Schoepp Date: Fri, 13 Sep 2024 13:46:13 -0600 Subject: [PATCH] Upgrade to OTel v0.24.0 Signed-off-by: Caleb Schoepp --- Cargo.lock | 160 +++++++++++++++++---------------- Cargo.toml | 6 +- crates/telemetry/Cargo.toml | 2 +- crates/telemetry/src/logs.rs | 2 +- crates/telemetry/src/traces.rs | 7 +- 5 files changed, 93 insertions(+), 84 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 971654c26f..773b0f8298 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -525,18 +525,17 @@ checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.28", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", "itoa", "matchit", "memchr", @@ -545,7 +544,7 @@ dependencies = [ "pin-project-lite", "rustversion", "serde 1.0.197", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower", "tower-layer", "tower-service", @@ -553,17 +552,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ "async-trait", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] @@ -3354,14 +3356,15 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 0.14.28", + "hyper 1.4.1", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] @@ -3395,9 +3398,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -3962,7 +3965,7 @@ checksum = "40f256c5c98e84808e067133253471d6f5961c670f0127150694210fb8e6116a" dependencies = [ "base64 0.21.7", "bytes", - "prost", + "prost 0.12.4", "serde 1.0.197", ] @@ -5012,9 +5015,9 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +checksum = "4c365a63eec4f55b7efeceb724f1336f26a9cf3427b70e59e2cd2a5b947fba96" dependencies = [ "futures-core", "futures-sink", @@ -5026,32 +5029,32 @@ dependencies = [ [[package]] name = "opentelemetry-http" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ba633e55c5ea6f431875ba55e71664f2fa5d3a90bd34ec9302eecc41c865dd" +checksum = "ad31e9de44ee3538fb9d64fe3376c1362f406162434609e79aea2a41a0af78ab" dependencies = [ "async-trait", "bytes", - "http 0.2.12", + "http 1.1.0", "opentelemetry", - "reqwest 0.11.27", + "reqwest 0.12.7", ] [[package]] name = "opentelemetry-otlp" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" +checksum = "6b925a602ffb916fb7421276b86756027b37ee708f9dce2dbdcc51739f07e727" dependencies = [ "async-trait", "futures-core", - "http 0.2.12", + "http 1.1.0", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", - "prost", - "reqwest 0.11.27", + "prost 0.13.2", + "reqwest 0.12.7", "thiserror", "tokio", "tonic", @@ -5059,13 +5062,13 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" +checksum = "30ee9f20bff9c984511a02f082dc8ede839e4a9bf15cc2487c8d6fea5ad850d9" dependencies = [ "opentelemetry", "opentelemetry_sdk", - "prost", + "prost 0.13.2", "tonic", ] @@ -5077,19 +5080,17 @@ checksum = "f9ab5bd6c42fb9349dcf28af2ba9a0667f697f9bdcca045d39f2cec5543e2910" [[package]] name = "opentelemetry_sdk" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +checksum = "692eac490ec80f24a17828d49b40b60f5aeaccdfe6a503f939713afd22bc28df" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "lazy_static 1.4.0", "once_cell", "opentelemetry", - "ordered-float 4.2.0", "percent-encoding", "rand 0.8.5", "serde_json", @@ -5113,15 +5114,6 @@ dependencies = [ "num-traits 0.2.18", ] -[[package]] -name = "ordered-float" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" -dependencies = [ - "num-traits 0.2.18", -] - [[package]] name = "ordered-stream" version = "0.2.0" @@ -5250,7 +5242,7 @@ checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" dependencies = [ "heck 0.4.1", "itertools 0.11.0", - "prost", + "prost 0.12.4", "prost-types", ] @@ -5264,7 +5256,7 @@ dependencies = [ "chrono", "pbjson", "pbjson-build", - "prost", + "prost 0.12.4", "prost-build", "serde 1.0.197", ] @@ -5670,7 +5662,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.12.4", +] + +[[package]] +name = "prost" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" +dependencies = [ + "bytes", + "prost-derive 0.13.2", ] [[package]] @@ -5687,7 +5689,7 @@ dependencies = [ "once_cell", "petgraph", "prettyplease", - "prost", + "prost 0.12.4", "prost-types", "regex", "syn 2.0.58", @@ -5707,6 +5709,19 @@ dependencies = [ "syn 2.0.58", ] +[[package]] +name = "prost-derive" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.58", +] + [[package]] name = "prost-reflect" version = "0.13.1" @@ -5716,7 +5731,7 @@ dependencies = [ "logos 0.14.0", "miette 7.2.0", "once_cell", - "prost", + "prost 0.12.4", "prost-types", ] @@ -5726,7 +5741,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe" dependencies = [ - "prost", + "prost 0.12.4", ] [[package]] @@ -5737,7 +5752,7 @@ checksum = "a29b3c5596eb23a849deba860b53ffd468199d9ad5fe4402a7d55379e16aa2d2" dependencies = [ "bytes", "miette 7.2.0", - "prost", + "prost 0.12.4", "prost-reflect", "prost-types", "protox-parse", @@ -6656,7 +6671,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.1", + "ordered-float", "serde 1.0.197", ] @@ -8518,16 +8533,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.4.0" @@ -8729,23 +8734,26 @@ dependencies = [ [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad" dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.7", + "base64 0.22.1", "bytes", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.28", + "h2 0.4.4", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.4.1", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", - "prost", + "prost 0.13.2", + "socket2 0.5.6", "tokio", "tokio-stream", "tower", @@ -8844,9 +8852,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b" dependencies = [ "js-sys", "once_cell", @@ -9282,7 +9290,7 @@ dependencies = [ "pbjson", "pbjson-build", "pbjson-types", - "prost", + "prost 0.12.4", "prost-build", "prost-types", "protox", @@ -9302,7 +9310,7 @@ dependencies = [ "hex", "indexmap 2.2.6", "pbjson-types", - "prost", + "prost 0.12.4", "prost-types", "semver", "serde 1.0.197", @@ -9322,7 +9330,7 @@ checksum = "513ef81a5bb1ac5d7bd04f90d3c192dad8f590f4c02b3ef68d3ae4fbbb53c1d7" dependencies = [ "anyhow", "indexmap 2.2.6", - "prost", + "prost 0.12.4", "thiserror", "warg-crypto", "warg-protobuf", diff --git a/Cargo.toml b/Cargo.toml index e2a6e6c351..6d8bd2cbc9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -127,15 +127,15 @@ anyhow = "1.0.75" conformance-tests = { git = "https://github.com/fermyon/conformance-tests", rev = "387b7f375df59e6254a7c29cf4a53507a9f46d32" } http-body-util = "0.1.0" hyper = { version = "1.0.0", features = ["full"] } -opentelemetry = { version = "0.23.0", features = ["metrics", "trace", "logs"] } -opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio", "logs_level_enabled", "metrics"] } +opentelemetry = { version = "0.24.0", features = ["metrics", "trace", "logs"] } +opentelemetry_sdk = { version = "0.24.1", features = ["rt-tokio", "logs_level_enabled", "metrics"] } reqwest = { version = "0.12", features = ["stream", "blocking"] } # In `rustls` turn off the `aws_lc_rs` default feature and turn on `ring`. # If both `aws_lc_rs` and `ring` are enabled, a panic at runtime will occur. rustls = { version = "0.23", default-features = false, features = ["ring", "std", "logging", "tls12"] } test-environment = { git = "https://github.com/fermyon/conformance-tests", rev = "387b7f375df59e6254a7c29cf4a53507a9f46d32" } tracing = { version = "0.1", features = ["log"] } -tracing-opentelemetry = { version = "0.24.0", default-features = false, features = ["metrics"] } +tracing-opentelemetry = { version = "0.25.0", default-features = false, features = ["metrics"] } wasi-common-preview1 = { version = "22.0.0", package = "wasi-common", features = [ "tokio", diff --git a/crates/telemetry/Cargo.toml b/crates/telemetry/Cargo.toml index 7c5225a3d7..a645aef947 100644 --- a/crates/telemetry/Cargo.toml +++ b/crates/telemetry/Cargo.toml @@ -11,7 +11,7 @@ http1 = { version = "1.0.0", package = "http" } once_cell = "1.19.0" opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } -opentelemetry-otlp = { version = "0.16.0", default-features = false, features = ["http-proto", "trace", "http", "reqwest-client", "metrics", "grpc-tonic", "logs"] } +opentelemetry-otlp = { version = "0.17.0", default-features = false, features = ["http-proto", "trace", "http", "reqwest-client", "metrics", "grpc-tonic", "logs"] } opentelemetry-semantic-conventions = "0.14.0" terminal = { path = "../terminal" } tracing = { version = "0.1.37", features = ["log"] } diff --git a/crates/telemetry/src/logs.rs b/crates/telemetry/src/logs.rs index 32b4d5bfcf..2fcf012b6e 100644 --- a/crates/telemetry/src/logs.rs +++ b/crates/telemetry/src/logs.rs @@ -93,7 +93,7 @@ pub(crate) fn init_otel_logging_backend(spin_version: String) -> anyhow::Result< }; let provider = opentelemetry_sdk::logs::LoggerProvider::builder() - .with_config(opentelemetry_sdk::logs::config().with_resource(resource)) + .with_resource(resource) .with_log_processor( BatchLogProcessor::builder( exporter_builder.build_log_exporter()?, diff --git a/crates/telemetry/src/traces.rs b/crates/telemetry/src/traces.rs index 43fe600f3a..926d355c3f 100644 --- a/crates/telemetry/src/traces.rs +++ b/crates/telemetry/src/traces.rs @@ -1,6 +1,7 @@ use std::time::Duration; use anyhow::bail; +use opentelemetry::trace::TracerProvider; use opentelemetry_otlp::SpanExporterBuilder; use opentelemetry_sdk::{ resource::{EnvResourceDetector, TelemetryResourceDetector}, @@ -43,10 +44,10 @@ pub(crate) fn otel_tracing_layer LookupSpan<'span>>( OtlpProtocol::HttpJson => bail!("http/json OTLP protocol is not supported"), }; - let tracer = opentelemetry_otlp::new_pipeline() + let tracer_provider = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter(exporter) - .with_trace_config(opentelemetry_sdk::trace::config().with_resource(resource)) + .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource(resource)) .install_batch(opentelemetry_sdk::runtime::Tokio)?; let env_filter = match EnvFilter::try_from_env("SPIN_OTEL_TRACING_LEVEL") { @@ -56,7 +57,7 @@ pub(crate) fn otel_tracing_layer LookupSpan<'span>>( }; Ok(tracing_opentelemetry::layer() - .with_tracer(tracer) + .with_tracer(tracer_provider.tracer("spin")) .with_threads(false) .with_filter(env_filter)) }