diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 29e816fae..44b2a942b 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -363,6 +363,28 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "async-task" version = "4.7.0" @@ -1860,7 +1882,7 @@ dependencies = [ "ctrlc", "ip_network", "tracing", - "tracing-log 0.2.0", + "tracing-log", "tracing-subscriber", "url", ] @@ -1938,7 +1960,7 @@ dependencies = [ "thiserror", "tokio", "tracing", - "tracing-log 0.2.0", + "tracing-log", "tracing-panic", "tracing-subscriber", "url", @@ -1988,7 +2010,7 @@ dependencies = [ "once_cell", "opentelemetry", "opentelemetry-otlp", - "opentelemetry_api", + "opentelemetry_sdk", "phoenix-channel", "proptest", "rand 0.8.5", @@ -2002,7 +2024,7 @@ dependencies = [ "tokio", "tracing", "tracing-core", - "tracing-opentelemetry 0.21.0", + "tracing-opentelemetry", "tracing-stackdriver", "tracing-subscriber", "trackable 1.3.0", @@ -3145,15 +3167,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.11.0" @@ -4074,26 +4087,31 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" +checksum = "900d57987be3f2aeb70d385fff9b27fb74c5723cc9a52d904d4f9c807a0667bf" dependencies = [ - "opentelemetry_api", - "opentelemetry_sdk", + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", + "urlencoding", ] [[package]] name = "opentelemetry-otlp" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" +checksum = "1a016b8d9495c639af2145ac22387dcb88e44118e45320d9238fbf4e7889abcb" dependencies = [ "async-trait", "futures-core", "http 0.2.12", + "opentelemetry", "opentelemetry-proto", "opentelemetry-semantic-conventions", - "opentelemetry_api", "opentelemetry_sdk", "prost", "thiserror", @@ -4103,11 +4121,11 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" +checksum = "3a8fddc9b68f5b80dae9d6f510b88e02396f006ad48cac349411fbecc80caae4" dependencies = [ - "opentelemetry_api", + "opentelemetry", "opentelemetry_sdk", "prost", "tonic", @@ -4115,47 +4133,27 @@ dependencies = [ [[package]] name = "opentelemetry-semantic-conventions" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" -dependencies = [ - "opentelemetry", -] - -[[package]] -name = "opentelemetry_api" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" -dependencies = [ - "futures-channel", - "futures-util", - "indexmap 1.9.3", - "js-sys", - "once_cell", - "pin-project-lite", - "thiserror", - "urlencoding", -] +checksum = "f9ab5bd6c42fb9349dcf28af2ba9a0667f697f9bdcca045d39f2cec5543e2910" [[package]] name = "opentelemetry_sdk" -version = "0.20.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +checksum = "9e90c7113be649e31e9a0f8b5ee24ed7a16923b322c3c5ab6367469c049d6b7e" dependencies = [ "async-trait", "crossbeam-channel", "futures-channel", "futures-executor", "futures-util", + "glob", "once_cell", - "opentelemetry_api", + "opentelemetry", "ordered-float", "percent-encoding", "rand 0.8.5", - "regex", - "serde_json", "thiserror", "tokio", "tokio-stream", @@ -4169,9 +4167,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "3.9.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" dependencies = [ "num-traits", ] @@ -4717,9 +4715,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ "bytes", "prost-derive", @@ -4727,15 +4725,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.11.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.52", ] [[package]] @@ -6595,16 +6593,15 @@ dependencies = [ [[package]] name = "tonic" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" dependencies = [ + "async-stream", "async-trait", "axum 0.6.20", "base64 0.21.7", "bytes", - "futures-core", - "futures-util", "h2 0.3.24", "http 0.2.12", "http-body 0.4.6", @@ -6709,17 +6706,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-log" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -6733,32 +6719,20 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-log 0.1.4", - "tracing-subscriber", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75327c6b667828ddc28f5e3f169036cb793c3f588d83bf0f262a7f062ffed3c8" +checksum = "a9be14ba1bbe4ab79e9229f7f89fab8d120b865859f10527f31c033e599d2284" dependencies = [ + "js-sys", "once_cell", "opentelemetry", "opentelemetry_sdk", "smallvec 1.13.1", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-subscriber", + "web-time", ] [[package]] @@ -6798,9 +6772,8 @@ dependencies = [ [[package]] name = "tracing-stackdriver" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644201289b078e925ad49bfdeb7c0ced851d211462376d5154b13ce7be899afa" +version = "0.10.0" +source = "git+https://github.com/thomaseizinger/tracing-stackdriver?branch=deps/bump-otel-0.22#329d5c9fec0463f4f5db3b6e2a2e70b442dd8d64" dependencies = [ "Inflector", "opentelemetry", @@ -6809,7 +6782,7 @@ dependencies = [ "thiserror", "time", "tracing-core", - "tracing-opentelemetry 0.20.0", + "tracing-opentelemetry", "tracing-subscriber", ] @@ -6831,7 +6804,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", "tracing-serde", ] @@ -7204,6 +7177,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webkit2gtk" version = "0.18.2" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index e063bc897..2a93b2712 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -49,6 +49,7 @@ phoenix-channel = { path = "phoenix-channel"} [patch.crates-io] boringtun = { git = "https://github.com/cloudflare/boringtun", branch = "master" } str0m = { git = "https://github.com/firezone/str0m", branch = "main" } +tracing-stackdriver = { git = "https://github.com/thomaseizinger/tracing-stackdriver", branch = "deps/bump-otel-0.22" } [profile.release] strip = true diff --git a/rust/connlib/clients/shared/Cargo.toml b/rust/connlib/clients/shared/Cargo.toml index 89718f55b..6c0cd07c4 100644 --- a/rust/connlib/clients/shared/Cargo.toml +++ b/rust/connlib/clients/shared/Cargo.toml @@ -15,7 +15,7 @@ secrecy = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter"] } tracing-appender = { version = "0.2.2" } -tracing-stackdriver = { version = "0.8.0" } +tracing-stackdriver = { version = "0.10.0" } async-trait = { version = "0.1", default-features = false } connlib-shared = { workspace = true } firezone-tunnel = { workspace = true } diff --git a/rust/relay/Cargo.toml b/rust/relay/Cargo.toml index abfd791de..483457045 100644 --- a/rust/relay/Cargo.toml +++ b/rust/relay/Cargo.toml @@ -17,11 +17,11 @@ stun_codec = "0.3.4" tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread", "net", "time"] } tracing = { workspace = true, features = ["log"] } tracing-subscriber = { workspace = true, features = ["env-filter", "json", "fmt"] } -tracing-stackdriver = { version = "0.8.0", features = ["opentelemetry"] } -tracing-opentelemetry = "0.21.0" -opentelemetry = { version = "0.20.0", features = ["rt-tokio", "metrics"] } -opentelemetry_api = "0.20.0" -opentelemetry-otlp = { version = "0.13.0", features = ["metrics"]} +tracing-stackdriver = { version = "0.10.0", features = ["opentelemetry"] } +tracing-opentelemetry = "0.23.0" +opentelemetry = { version = "0.22.0", features = ["metrics"] } +opentelemetry_sdk = { version = "0.22.1", features = ["rt-tokio"] } +opentelemetry-otlp = { version = "0.15.0", features = ["metrics"] } env_logger = "0.11.3" tracing-core = "0.1.31" bytes = "1.4.0" diff --git a/rust/relay/src/main.rs b/rust/relay/src/main.rs index 849777ec1..1fecc55c7 100644 --- a/rust/relay/src/main.rs +++ b/rust/relay/src/main.rs @@ -7,7 +7,7 @@ use firezone_relay::{ }; use futures::channel::mpsc; use futures::{future, FutureExt, SinkExt, StreamExt}; -use opentelemetry::{sdk, KeyValue}; +use opentelemetry::KeyValue; use opentelemetry_otlp::WithExportConfig; use phoenix_channel::{Event, LoginUrl, PhoenixChannel}; use rand::rngs::StdRng; @@ -170,15 +170,14 @@ async fn setup_tracing(args: &Args) -> Result<()> { .tonic() .with_endpoint(grpc_endpoint.clone()); - let tracer = - opentelemetry_otlp::new_pipeline() - .tracing() - .with_exporter(exporter) - .with_trace_config(sdk::trace::Config::default().with_resource( - sdk::Resource::new(vec![KeyValue::new("service.name", "relay")]), - )) - .install_batch(opentelemetry::runtime::Tokio) - .context("Failed to create OTLP trace pipeline")?; + let tracer = opentelemetry_otlp::new_pipeline() + .tracing() + .with_exporter(exporter) + .with_trace_config(opentelemetry_sdk::trace::Config::default().with_resource( + opentelemetry_sdk::Resource::new(vec![KeyValue::new("service.name", "relay")]), + )) + .install_batch(opentelemetry_sdk::runtime::Tokio) + .context("Failed to create OTLP trace pipeline")?; tracing::trace!(target: "relay", "Successfully initialized trace provider on tokio runtime"); @@ -187,7 +186,7 @@ async fn setup_tracing(args: &Args) -> Result<()> { .with_endpoint(grpc_endpoint); opentelemetry_otlp::new_pipeline() - .metrics(opentelemetry::runtime::Tokio) + .metrics(opentelemetry_sdk::runtime::Tokio) .with_exporter(exporter) .build() .context("Failed to create OTLP metrics pipeline")?; diff --git a/rust/relay/src/server.rs b/rust/relay/src/server.rs index eb6c7ab98..0671a648b 100644 --- a/rust/relay/src/server.rs +++ b/rust/relay/src/server.rs @@ -163,7 +163,7 @@ where ) -> Self { // TODO: Validate that local IP isn't multicast / loopback etc. - let meter = opentelemetry_api::global::meter("relay"); + let meter = opentelemetry::global::meter("relay"); let allocations_up_down_counter = meter .i64_up_down_counter("allocations_total")