From 7cf94aa971f0befa64d51aef8841e8aad3076e36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 20:58:37 +0000 Subject: [PATCH 1/7] Bump the otel group with 3 updates Bumps the otel group with 3 updates: [tracing-opentelemetry](https://github.com/tokio-rs/tracing-opentelemetry), [opentelemetry-otlp](https://github.com/open-telemetry/opentelemetry-rust) and [tonic](https://github.com/hyperium/tonic). Updates `tracing-opentelemetry` from 0.20.0 to 0.27.0 - [Release notes](https://github.com/tokio-rs/tracing-opentelemetry/releases) - [Changelog](https://github.com/tokio-rs/tracing-opentelemetry/blob/v0.1.x/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/tracing-opentelemetry/compare/v0.20.0...v0.27.0) Updates `opentelemetry-otlp` from 0.13.0 to 0.26.0 - [Release notes](https://github.com/open-telemetry/opentelemetry-rust/releases) - [Commits](https://github.com/open-telemetry/opentelemetry-rust/compare/opentelemetry-otlp-0.13.0...opentelemetry-otlp-0.26.0) Updates `tonic` from 0.9.2 to 0.12.3 - [Release notes](https://github.com/hyperium/tonic/releases) - [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md) - [Commits](https://github.com/hyperium/tonic/compare/v0.9.2...v0.12.3) --- updated-dependencies: - dependency-name: tracing-opentelemetry dependency-type: direct:production update-type: version-update:semver-minor dependency-group: otel - dependency-name: opentelemetry-otlp dependency-type: direct:production update-type: version-update:semver-minor dependency-group: otel - dependency-name: tonic dependency-type: direct:production update-type: version-update:semver-minor dependency-group: otel ... Signed-off-by: dependabot[bot] --- Cargo.lock | 341 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 6 +- 2 files changed, 173 insertions(+), 174 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34effd1..79d3f2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,7 +39,7 @@ dependencies = [ "encoding_rs", "flate2", "futures-core", - "h2", + "h2 0.3.26", "http 0.2.12", "httparse", "httpdate", @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -182,7 +182,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -305,7 +305,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -316,9 +316,15 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.4.0" @@ -327,18 +333,17 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", + "http 1.1.0", + "http-body", + "http-body-util", "itoa", "matchit", "memchr", @@ -347,25 +352,28 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper", - "tower 0.4.13", + "sync_wrapper 1.0.1", + "tower 0.5.1", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", + "http 1.1.0", + "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", ] @@ -528,10 +536,10 @@ dependencies = [ "chrono", "futures", "http 1.1.0", - "hyper 1.4.1", + "hyper", "k8s-openapi", "kube", - "opentelemetry", + "opentelemetry 0.20.0", "opentelemetry-otlp", "prometheus-client", "schemars", @@ -644,7 +652,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.79", + "syn", ] [[package]] @@ -655,7 +663,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -677,7 +685,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn", ] [[package]] @@ -711,7 +719,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -746,7 +754,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -866,7 +874,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -926,6 +934,12 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "h2" version = "0.3.26" @@ -945,6 +959,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.6.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1028,17 +1061,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -1058,7 +1080,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.1", + "http-body", "pin-project-lite", ] @@ -1074,30 +1096,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.4.1" @@ -1107,9 +1105,11 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.1", + "http-body", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -1127,7 +1127,7 @@ dependencies = [ "futures-util", "headers", "http 1.1.0", - "hyper 1.4.1", + "hyper", "hyper-rustls", "hyper-util", "pin-project-lite", @@ -1145,7 +1145,7 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.4.1", + "hyper", "hyper-util", "log", "rustls", @@ -1156,25 +1156,13 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper 0.14.30", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "hyper-timeout" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 1.4.1", + "hyper", "hyper-util", "pin-project-lite", "tokio", @@ -1191,8 +1179,8 @@ dependencies = [ "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.1", - "hyper 1.4.1", + "http-body", + "hyper", "pin-project-lite", "socket2", "tokio", @@ -1384,12 +1372,12 @@ dependencies = [ "futures", "home", "http 1.1.0", - "http-body 1.0.1", + "http-body", "http-body-util", - "hyper 1.4.1", + "hyper", "hyper-http-proxy", "hyper-rustls", - "hyper-timeout 0.5.1", + "hyper-timeout", "hyper-util", "jsonpath-rust", "k8s-openapi", @@ -1437,7 +1425,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn", ] [[package]] @@ -1621,22 +1609,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" dependencies = [ "opentelemetry_api", - "opentelemetry_sdk", + "opentelemetry_sdk 0.20.0", +] + +[[package]] +name = "opentelemetry" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "570074cc999d1a58184080966e5bd3bf3a9a4af650c3b05047c2621e7405cd17" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", ] [[package]] name = "opentelemetry-otlp" -version = "0.13.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" +checksum = "29e1f9c8b032d4f635c730c0efcf731d5e2530ea13fa8bef7939ddc8420696bd" dependencies = [ "async-trait", "futures-core", - "http 0.2.12", + "http 1.1.0", + "opentelemetry 0.26.0", "opentelemetry-proto", - "opentelemetry-semantic-conventions", - "opentelemetry_api", - "opentelemetry_sdk", + "opentelemetry_sdk 0.26.0", "prost", "thiserror", "tokio", @@ -1645,25 +1646,16 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.3.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" +checksum = "c9d3968ce3aefdcca5c27e3c4ea4391b37547726a70893aab52d3de95d5f8b34" dependencies = [ - "opentelemetry_api", - "opentelemetry_sdk", + "opentelemetry 0.26.0", + "opentelemetry_sdk 0.26.0", "prost", "tonic", ] -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" -dependencies = [ - "opentelemetry", -] - [[package]] name = "opentelemetry_api" version = "0.20.0" @@ -1696,13 +1688,30 @@ dependencies = [ "ordered-float 3.9.2", "percent-encoding", "rand", - "regex", - "serde_json", "thiserror", "tokio", "tokio-stream", ] +[[package]] +name = "opentelemetry_sdk" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c627d9f4c9cdc1f21a29ee4bfbd6028fcb8bcf2a857b43f3abdf72c9c862f3" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "once_cell", + "opentelemetry 0.26.0", + "percent-encoding", + "rand", + "serde_json", + "thiserror", +] + [[package]] name = "ordered-float" version = "2.10.1" @@ -1809,7 +1818,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -1840,7 +1849,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -1905,14 +1914,14 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] name = "prost" -version = "0.11.9" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", "prost-derive", @@ -1920,15 +1929,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] @@ -2169,7 +2178,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn", ] [[package]] @@ -2243,7 +2252,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -2254,7 +2263,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -2383,17 +2392,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.79" @@ -2411,6 +2409,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "thiserror" version = "1.0.64" @@ -2428,7 +2432,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -2505,16 +2509,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" @@ -2523,7 +2517,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -2577,24 +2571,26 @@ dependencies = [ [[package]] name = "tonic" -version = "0.9.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ + "async-stream", "async-trait", "axum", - "base64 0.21.7", + "base64 0.22.1", "bytes", - "futures-core", - "futures-util", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", - "hyper-timeout 0.4.1", + "h2 0.4.6", + "http 1.1.0", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", + "socket2", "tokio", "tokio-stream", "tower 0.4.13", @@ -2632,7 +2628,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper", + "sync_wrapper 0.1.2", "tokio", "tokio-util", "tower-layer", @@ -2650,7 +2646,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "http 1.1.0", - "http-body 1.0.1", + "http-body", "mime", "pin-project-lite", "tower-layer", @@ -2704,7 +2700,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] @@ -2717,17 +2713,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" @@ -2741,16 +2726,20 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.20.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19" +checksum = "dc58af5d3f6c5811462cabb3289aec0093f7338e367e5a33d28c0433b3c7360b" dependencies = [ + "js-sys", "once_cell", - "opentelemetry", + "opentelemetry 0.26.0", + "opentelemetry_sdk 0.26.0", + "smallvec", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-subscriber", + "web-time", ] [[package]] @@ -2780,7 +2769,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", "tracing-serde", ] @@ -2901,7 +2890,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn", "wasm-bindgen-shared", ] @@ -2923,7 +2912,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2934,6 +2923,16 @@ version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +[[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 = "winapi" version = "0.3.9" @@ -3065,7 +3064,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b9f8a1b..4599ecc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,10 +37,10 @@ serde_yaml = "0.9.25" chrono = { version = "0.4.26", features = ["serde"] } tracing = "0.1.37" tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] } -tracing-opentelemetry = "0.20.0" +tracing-opentelemetry = "0.27.0" opentelemetry = { version = "0.20.0", features = ["trace", "rt-tokio"] } -opentelemetry-otlp = { version = "0.13.0", features = ["tokio"], optional = true } -tonic = { version = "0.9", optional = true } +opentelemetry-otlp = { version = "0.26.0", features = ["tokio"], optional = true } +tonic = { version = "0.12", optional = true } thiserror = "1.0.47" anyhow = "1.0.89" prometheus-client = "0.22.2" From 6a5f9d3bf8cf17dd22a389c9cc927960a21d9ce8 Mon Sep 17 00:00:00 2001 From: clux Date: Wed, 9 Oct 2024 23:17:40 +0100 Subject: [PATCH 2/7] part 1 of delving into otel/tracing to figure out wtf is broken sooo many crates... Signed-off-by: clux --- Cargo.lock | 157 +++++++++++++--------------------------------- Cargo.toml | 10 +-- src/controller.rs | 2 +- src/metrics.rs | 10 +-- src/telemetry.rs | 88 ++++++++++++++++---------- 5 files changed, 109 insertions(+), 158 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79d3f2a..6edf960 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -187,9 +187,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -539,8 +539,9 @@ dependencies = [ "hyper", "k8s-openapi", "kube", - "opentelemetry 0.20.0", + "opentelemetry", "opentelemetry-otlp", + "opentelemetry_sdk", "prometheus-client", "schemars", "serde", @@ -548,7 +549,6 @@ dependencies = [ "serde_yaml", "thiserror", "tokio", - "tonic", "tower-test", "tracing", "tracing-opentelemetry", @@ -606,15 +606,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.20" @@ -786,9 +777,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -930,9 +921,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -1264,9 +1255,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -1288,9 +1279,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "0cb94a0ffd3f3ee755c20f7d8752f45cac88605a4dcf808abcff72873296ec7b" dependencies = [ "wasm-bindgen", ] @@ -1583,9 +1574,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -1602,16 +1593,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" -[[package]] -name = "opentelemetry" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" -dependencies = [ - "opentelemetry_api", - "opentelemetry_sdk 0.20.0", -] - [[package]] name = "opentelemetry" version = "0.26.0" @@ -1635,9 +1616,9 @@ dependencies = [ "async-trait", "futures-core", "http 1.1.0", - "opentelemetry 0.26.0", + "opentelemetry", "opentelemetry-proto", - "opentelemetry_sdk 0.26.0", + "opentelemetry_sdk", "prost", "thiserror", "tokio", @@ -1650,49 +1631,12 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9d3968ce3aefdcca5c27e3c4ea4391b37547726a70893aab52d3de95d5f8b34" dependencies = [ - "opentelemetry 0.26.0", - "opentelemetry_sdk 0.26.0", + "opentelemetry", + "opentelemetry_sdk", "prost", "tonic", ] -[[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", -] - -[[package]] -name = "opentelemetry_sdk" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "once_cell", - "opentelemetry_api", - "ordered-float 3.9.2", - "percent-encoding", - "rand", - "thiserror", - "tokio", - "tokio-stream", -] - [[package]] name = "opentelemetry_sdk" version = "0.26.0" @@ -1705,11 +1649,13 @@ dependencies = [ "futures-util", "glob", "once_cell", - "opentelemetry 0.26.0", + "opentelemetry", "percent-encoding", "rand", "serde_json", "thiserror", + "tokio", + "tokio-stream", ] [[package]] @@ -1721,15 +1667,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "ordered-float" -version = "3.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" -dependencies = [ - "num-traits", -] - [[package]] name = "overload" version = "0.1.1" @@ -1866,9 +1803,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "powerfmt" @@ -2149,9 +2086,9 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -2211,9 +2148,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -2240,7 +2177,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", ] @@ -2732,8 +2669,8 @@ checksum = "dc58af5d3f6c5811462cabb3289aec0093f7338e367e5a33d28c0433b3c7360b" dependencies = [ "js-sys", "once_cell", - "opentelemetry 0.26.0", - "opentelemetry_sdk 0.26.0", + "opentelemetry", + "opentelemetry_sdk", "smallvec", "tracing", "tracing-core", @@ -2793,9 +2730,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" @@ -2805,9 +2742,9 @@ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -2835,12 +2772,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "valuable" version = "0.1.0" @@ -2870,9 +2801,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "ef073ced962d62984fb38a36e5fdc1a2b23c9e0e1fa0689bb97afa4202ef6887" dependencies = [ "cfg-if", "once_cell", @@ -2881,9 +2812,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "c4bfab14ef75323f4eb75fa52ee0a3fb59611977fd3240da19b2cf36ff85030e" dependencies = [ "bumpalo", "log", @@ -2896,9 +2827,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "a7bec9830f60924d9ceb3ef99d55c155be8afa76954edffbb5936ff4509474e7" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2906,9 +2837,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "4c74f6e152a76a2ad448e223b0fc0b6b5747649c3d769cc6bf45737bf97d0ed6" dependencies = [ "proc-macro2", "quote", @@ -2919,9 +2850,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "a42f6c679374623f295a8623adfe63d9284091245c3504bde47c17a3ce2777d9" [[package]] name = "web-time" diff --git a/Cargo.toml b/Cargo.toml index 4599ecc..4991de7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,8 @@ name = "controller" path = "src/lib.rs" [features] -default = [] -telemetry = ["tonic", "opentelemetry-otlp"] +default = ["telemetry"] +telemetry = ["opentelemetry-otlp", "opentelemetry_sdk"] [dependencies] actix-web = "4.4.0" @@ -36,11 +36,11 @@ serde_json = "1.0.105" serde_yaml = "0.9.25" chrono = { version = "0.4.26", features = ["serde"] } tracing = "0.1.37" -tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] } +tracing-subscriber = { version = "0.3.18", features = ["json", "env-filter"] } tracing-opentelemetry = "0.27.0" -opentelemetry = { version = "0.20.0", features = ["trace", "rt-tokio"] } +opentelemetry = { version = "0.26.0", features = ["trace"] } opentelemetry-otlp = { version = "0.26.0", features = ["tokio"], optional = true } -tonic = { version = "0.12", optional = true } +opentelemetry_sdk = { version = "0.26.0", optional = true, features = ["tokio", "rt-tokio"] } thiserror = "1.0.47" anyhow = "1.0.89" prometheus-client = "0.22.2" diff --git a/src/controller.rs b/src/controller.rs index a40e69b..34818ec 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -60,7 +60,7 @@ pub struct Context { async fn reconcile(doc: Arc, ctx: Arc) -> Result { let trace_id = telemetry::get_trace_id(); Span::current().record("trace_id", &field::display(&trace_id)); - let _timer = ctx.metrics.reconcile.count_and_measure(&trace_id); + let _timer = ctx.metrics.reconcile.count_and_measure(trace_id); ctx.diagnostics.write().await.last_event = Utc::now(); let ns = doc.namespace().unwrap(); // doc is namespace scoped let docs: Api = Api::namespaced(ctx.client.clone(), &ns); diff --git a/src/metrics.rs b/src/metrics.rs index 62e69aa..91ad055 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -1,6 +1,6 @@ use crate::{Document, Error}; use kube::ResourceExt; -use opentelemetry::trace::TraceId; +//use opentelemetry::trace::TraceId; use prometheus_client::{ encoding::EncodeLabelSet, metrics::{counter::Counter, exemplar::HistogramWithExemplars, family::Family}, @@ -30,11 +30,11 @@ impl Default for Metrics { pub struct TraceLabel { pub trace_id: String, } -impl TryFrom<&TraceId> for TraceLabel { +impl TryFrom for TraceLabel { type Error = anyhow::Error; - fn try_from(id: &TraceId) -> Result { - if std::matches!(id, &TraceId::INVALID) { + fn try_from(id: u64) -> Result { + if std::matches!(id, 0) { anyhow::bail!("invalid trace id") } else { let trace_id = id.to_string(); @@ -89,7 +89,7 @@ impl ReconcileMetrics { .inc(); } - pub fn count_and_measure(&self, trace_id: &TraceId) -> ReconcileMeasurer { + pub fn count_and_measure(&self, trace_id: u64) -> ReconcileMeasurer { self.runs.get_or_create(&()).inc(); ReconcileMeasurer { start: Instant::now(), diff --git a/src/telemetry.rs b/src/telemetry.rs index a7ced10..28d39e7 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,60 +1,80 @@ -use opentelemetry::trace::TraceId; +//use opentelemetry::trace::TraceId; +use opentelemetry::global; +use opentelemetry::trace::{TraceContextExt, Tracer}; +use opentelemetry::KeyValue; +use opentelemetry_otlp::WithExportConfig; +use opentelemetry_sdk::trace::Config; +use opentelemetry_sdk::{runtime, trace as sdktrace, Resource}; +use tracing_opentelemetry::OpenTelemetryLayer; 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 +pub fn get_trace_id() -> u64 { + //use opentelemetry::trace::context::TraceContextExt as _; // opentelemetry::Context -> opentelemetry::trace::Span + //use tracing_opentelemetry::OpenTelemetrySpanExt as _; // tracing::Span to opentelemetry::Context + tracing::Span::current().id().unwrap().into_u64() + /*tracing::Span::current() + .context() + .span() + .span_context() + .trace_id()*/ +} - tracing::Span::current() - .context() - .span() - .span_context() - .trace_id() +fn resource() -> Resource { + Resource::new([ + KeyValue::new("service.name", env!("CARGO_PKG_NAME")), + KeyValue::new("service.version", env!("CARGO_PKG_VERSION")), + ]) } #[cfg(feature = "telemetry")] -async fn init_tracer() -> opentelemetry::sdk::trace::Tracer { +fn init_tracer() -> sdktrace::TracerProvider { let otlp_endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Need a otel tracing collector configured"); - let channel = tonic::transport::Channel::from_shared(otlp_endpoint) - .unwrap() - .connect() - .await - .unwrap(); - + /*let export_config = ExportConfig { + endpoint: otlp_endpoint.clone(), + ..ExportConfig::default() + };*/ opentelemetry_otlp::new_pipeline() .tracing() - .with_exporter(opentelemetry_otlp::new_exporter().tonic().with_channel(channel)) - .with_trace_config(opentelemetry::sdk::trace::config().with_resource( - opentelemetry::sdk::Resource::new(vec![opentelemetry::KeyValue::new( - "service.name", - "doc-controller", - )]), - )) - .install_batch(opentelemetry::runtime::Tokio) - .unwrap() + .with_exporter( + opentelemetry_otlp::new_exporter() + .tonic() + .with_endpoint(otlp_endpoint), + ) + .with_trace_config(Config::default().with_resource(resource())) + .install_batch(runtime::Tokio) + .expect("valid tracer") } /// Initialize tracing pub async fn init() { // Setup tracing layers - #[cfg(feature = "telemetry")] - let telemetry = tracing_opentelemetry::layer().with_tracer(init_tracer().await); + //#[cfg(feature = "telemetry")] + let tracer = init_tracer(); + global::set_tracer_provider(tracer); + + //let telemetry = tracing_opentelemetry::layer().with_tracer(init_tracer()); let logger = tracing_subscriber::fmt::layer().compact(); let env_filter = EnvFilter::try_from_default_env() .or(EnvFilter::try_new("info")) .unwrap(); + tracing_subscriber::registry() + //.with(env_filter) + .with(logger) + .with(OpenTelemetryLayer::new(tracer)) + .init(); + // Decide on layers - #[cfg(feature = "telemetry")] - let collector = Registry::default().with(telemetry).with(logger).with(env_filter); - #[cfg(not(feature = "telemetry"))] - let collector = Registry::default().with(logger).with(env_filter); + //#[cfg(feature = "telemetry")] + //let collector = Registry::default().with(telemetry).with(logger).with(env_filter); + //#[cfg(not(feature = "telemetry"))] + //let collector = Registry::default().with(logger).with(env_filter); // Initialize tracing - tracing::subscriber::set_global_default(collector).unwrap(); + //tracing::subscriber::set_global_default(collector).unwrap(); } #[cfg(test)] @@ -68,9 +88,9 @@ mod test { use super::*; super::init().await; #[tracing::instrument(name = "test_span")] // need to be in an instrumented fn - fn test_trace_id() -> TraceId { + fn test_trace_id() -> u64 { get_trace_id() } - assert_ne!(test_trace_id(), TraceId::INVALID, "valid trace"); + assert_ne!(test_trace_id(), 0, "valid trace"); } } From 5f4d912b47a7c6ca4c7d448a5c03e45270664bfe Mon Sep 17 00:00:00 2001 From: clux Date: Wed, 9 Oct 2024 23:48:02 +0100 Subject: [PATCH 3/7] ok it compiles! Signed-off-by: clux --- src/telemetry.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/telemetry.rs b/src/telemetry.rs index 28d39e7..ee13c0b 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,7 +1,7 @@ //use opentelemetry::trace::TraceId; -use opentelemetry::global; use opentelemetry::trace::{TraceContextExt, Tracer}; use opentelemetry::KeyValue; +use opentelemetry::{global, trace::TracerProvider}; use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::trace::Config; use opentelemetry_sdk::{runtime, trace as sdktrace, Resource}; @@ -28,7 +28,7 @@ fn resource() -> Resource { } #[cfg(feature = "telemetry")] -fn init_tracer() -> sdktrace::TracerProvider { +fn init_tracer() -> sdktrace::Tracer { let otlp_endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Need a otel tracing collector configured"); @@ -36,7 +36,8 @@ fn init_tracer() -> sdktrace::TracerProvider { endpoint: otlp_endpoint.clone(), ..ExportConfig::default() };*/ - opentelemetry_otlp::new_pipeline() + + let provider = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter( opentelemetry_otlp::new_exporter() @@ -45,15 +46,17 @@ fn init_tracer() -> sdktrace::TracerProvider { ) .with_trace_config(Config::default().with_resource(resource())) .install_batch(runtime::Tokio) - .expect("valid tracer") + .expect("valid tracer"); + + global::set_tracer_provider(provider.clone()); + provider.tracer("tracing-otel-subscriber") } /// Initialize tracing pub async fn init() { // Setup tracing layers //#[cfg(feature = "telemetry")] - let tracer = init_tracer(); - global::set_tracer_provider(tracer); + let otel = OpenTelemetryLayer::new(init_tracer()); //let telemetry = tracing_opentelemetry::layer().with_tracer(init_tracer()); let logger = tracing_subscriber::fmt::layer().compact(); @@ -62,9 +65,9 @@ pub async fn init() { .unwrap(); tracing_subscriber::registry() - //.with(env_filter) + .with(env_filter) .with(logger) - .with(OpenTelemetryLayer::new(tracer)) + .with(otel) .init(); // Decide on layers From 8b28a33d8b636455a269f8fcc53b654a5cee9090 Mon Sep 17 00:00:00 2001 From: clux Date: Wed, 9 Oct 2024 23:53:47 +0100 Subject: [PATCH 4/7] make trace ids work again Signed-off-by: clux --- src/controller.rs | 2 +- src/metrics.rs | 10 +++++----- src/telemetry.rs | 25 ++++++++++++------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/controller.rs b/src/controller.rs index 34818ec..a40e69b 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -60,7 +60,7 @@ pub struct Context { async fn reconcile(doc: Arc, ctx: Arc) -> Result { let trace_id = telemetry::get_trace_id(); Span::current().record("trace_id", &field::display(&trace_id)); - let _timer = ctx.metrics.reconcile.count_and_measure(trace_id); + let _timer = ctx.metrics.reconcile.count_and_measure(&trace_id); ctx.diagnostics.write().await.last_event = Utc::now(); let ns = doc.namespace().unwrap(); // doc is namespace scoped let docs: Api = Api::namespaced(ctx.client.clone(), &ns); diff --git a/src/metrics.rs b/src/metrics.rs index 91ad055..62e69aa 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -1,6 +1,6 @@ use crate::{Document, Error}; use kube::ResourceExt; -//use opentelemetry::trace::TraceId; +use opentelemetry::trace::TraceId; use prometheus_client::{ encoding::EncodeLabelSet, metrics::{counter::Counter, exemplar::HistogramWithExemplars, family::Family}, @@ -30,11 +30,11 @@ impl Default for Metrics { pub struct TraceLabel { pub trace_id: String, } -impl TryFrom for TraceLabel { +impl TryFrom<&TraceId> for TraceLabel { type Error = anyhow::Error; - fn try_from(id: u64) -> Result { - if std::matches!(id, 0) { + fn try_from(id: &TraceId) -> Result { + if std::matches!(id, &TraceId::INVALID) { anyhow::bail!("invalid trace id") } else { let trace_id = id.to_string(); @@ -89,7 +89,7 @@ impl ReconcileMetrics { .inc(); } - pub fn count_and_measure(&self, trace_id: u64) -> ReconcileMeasurer { + pub fn count_and_measure(&self, trace_id: &TraceId) -> ReconcileMeasurer { self.runs.get_or_create(&()).inc(); ReconcileMeasurer { start: Instant::now(), diff --git a/src/telemetry.rs b/src/telemetry.rs index ee13c0b..79732d1 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,23 +1,22 @@ -//use opentelemetry::trace::TraceId; -use opentelemetry::trace::{TraceContextExt, Tracer}; +use opentelemetry::trace::{TraceContextExt, TraceId}; use opentelemetry::KeyValue; use opentelemetry::{global, trace::TracerProvider}; use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::trace::Config; use opentelemetry_sdk::{runtime, trace as sdktrace, Resource}; use tracing_opentelemetry::OpenTelemetryLayer; -use tracing_subscriber::{prelude::*, EnvFilter, Registry}; +use tracing_subscriber::{prelude::*, EnvFilter}; /// Fetch an opentelemetry::trace::TraceId as hex through the full tracing stack -pub fn get_trace_id() -> u64 { +pub fn get_trace_id() -> TraceId { //use opentelemetry::trace::context::TraceContextExt as _; // opentelemetry::Context -> opentelemetry::trace::Span - //use tracing_opentelemetry::OpenTelemetrySpanExt as _; // tracing::Span to opentelemetry::Context - tracing::Span::current().id().unwrap().into_u64() - /*tracing::Span::current() - .context() - .span() - .span_context() - .trace_id()*/ + use tracing_opentelemetry::OpenTelemetrySpanExt as _; // tracing::Span to opentelemetry::Context + //tracing::Span::current().id().unwrap().into_u64() + tracing::Span::current() + .context() + .span() + .span_context() + .trace_id() } fn resource() -> Resource { @@ -91,9 +90,9 @@ mod test { use super::*; super::init().await; #[tracing::instrument(name = "test_span")] // need to be in an instrumented fn - fn test_trace_id() -> u64 { + fn test_trace_id() -> TraceId { get_trace_id() } - assert_ne!(test_trace_id(), 0, "valid trace"); + assert_ne!(test_trace_id(), TraceId::INVALID, "valid trace"); } } From c0f5d2a3aafc2dd272bd9ba7b76780beda4659a1 Mon Sep 17 00:00:00 2001 From: clux Date: Thu, 10 Oct 2024 00:03:34 +0100 Subject: [PATCH 5/7] alright, should be everything... Signed-off-by: clux --- src/controller.rs | 4 ++-- src/telemetry.rs | 50 ++++++++++++++--------------------------------- 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/src/controller.rs b/src/controller.rs index a40e69b..e34bf36 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -59,7 +59,7 @@ pub struct Context { #[instrument(skip(ctx, doc), fields(trace_id))] async fn reconcile(doc: Arc, ctx: Arc) -> Result { let trace_id = telemetry::get_trace_id(); - Span::current().record("trace_id", &field::display(&trace_id)); + Span::current().record("trace_id", field::display(&trace_id)); let _timer = ctx.metrics.reconcile.count_and_measure(&trace_id); ctx.diagnostics.write().await.last_event = Utc::now(); let ns = doc.namespace().unwrap(); // doc is namespace scoped @@ -181,7 +181,7 @@ impl State { pub fn metrics(&self) -> String { let mut buffer = String::new(); let registry = &*self.metrics.registry; - prometheus_client::encoding::text::encode(&mut buffer, ®istry).unwrap(); + prometheus_client::encoding::text::encode(&mut buffer, registry).unwrap(); buffer } diff --git a/src/telemetry.rs b/src/telemetry.rs index 79732d1..14a6ca6 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,15 +1,12 @@ -use opentelemetry::trace::{TraceContextExt, TraceId}; -use opentelemetry::KeyValue; -use opentelemetry::{global, trace::TracerProvider}; +use opentelemetry::trace::{TraceId, TracerProvider}; use opentelemetry_otlp::WithExportConfig; -use opentelemetry_sdk::trace::Config; -use opentelemetry_sdk::{runtime, trace as sdktrace, Resource}; +use opentelemetry_sdk::{runtime, trace as sdktrace, trace::Config, Resource}; use tracing_opentelemetry::OpenTelemetryLayer; -use tracing_subscriber::{prelude::*, EnvFilter}; +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::context::TraceContextExt as _; // opentelemetry::Context -> opentelemetry::trace::Span + use opentelemetry::trace::TraceContextExt as _; // opentelemetry::Context -> opentelemetry::trace::Span use tracing_opentelemetry::OpenTelemetrySpanExt as _; // tracing::Span to opentelemetry::Context //tracing::Span::current().id().unwrap().into_u64() tracing::Span::current() @@ -20,6 +17,7 @@ pub fn get_trace_id() -> TraceId { } fn resource() -> Resource { + use opentelemetry::KeyValue; Resource::new([ KeyValue::new("service.name", env!("CARGO_PKG_NAME")), KeyValue::new("service.version", env!("CARGO_PKG_VERSION")), @@ -28,55 +26,37 @@ fn resource() -> Resource { #[cfg(feature = "telemetry")] fn init_tracer() -> sdktrace::Tracer { - let otlp_endpoint = - std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Need a otel tracing collector configured"); - - /*let export_config = ExportConfig { - endpoint: otlp_endpoint.clone(), - ..ExportConfig::default() - };*/ + let endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Needs an otel collector"); + let exporter = opentelemetry_otlp::new_exporter().tonic().with_endpoint(endpoint); let provider = opentelemetry_otlp::new_pipeline() .tracing() - .with_exporter( - opentelemetry_otlp::new_exporter() - .tonic() - .with_endpoint(otlp_endpoint), - ) + .with_exporter(exporter) .with_trace_config(Config::default().with_resource(resource())) .install_batch(runtime::Tokio) .expect("valid tracer"); - global::set_tracer_provider(provider.clone()); + opentelemetry::global::set_tracer_provider(provider.clone()); provider.tracer("tracing-otel-subscriber") } /// Initialize tracing pub async fn init() { // Setup tracing layers - //#[cfg(feature = "telemetry")] + #[cfg(feature = "telemetry")] let otel = OpenTelemetryLayer::new(init_tracer()); - //let telemetry = tracing_opentelemetry::layer().with_tracer(init_tracer()); let logger = tracing_subscriber::fmt::layer().compact(); let env_filter = EnvFilter::try_from_default_env() .or(EnvFilter::try_new("info")) .unwrap(); - tracing_subscriber::registry() - .with(env_filter) - .with(logger) - .with(otel) - .init(); - // Decide on layers - //#[cfg(feature = "telemetry")] - //let collector = Registry::default().with(telemetry).with(logger).with(env_filter); - //#[cfg(not(feature = "telemetry"))] - //let collector = Registry::default().with(logger).with(env_filter); - - // Initialize tracing - //tracing::subscriber::set_global_default(collector).unwrap(); + let reg = Registry::default(); + #[cfg(feature = "telemetry")] + reg.with(env_filter).with(logger).with(otel).init(); + #[cfg(not(feature = "telemetry"))] + reg.with(env_filter).with(logger).init(); } #[cfg(test)] From 481b4975db4709c26ca269d9b525410d28fef3d2 Mon Sep 17 00:00:00 2001 From: clux Date: Thu, 10 Oct 2024 00:08:19 +0100 Subject: [PATCH 6/7] build both features properly and fix build without the feature Signed-off-by: clux --- .github/dependabot.yml | 1 + Cargo.toml | 6 +++--- src/telemetry.rs | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 27d2f83..f176951 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -22,5 +22,6 @@ updates: patterns: - tracing-opentelemetry - opentelemetry-otlp + - opentelemetry_sdk - opentelemetry - tonic diff --git a/Cargo.toml b/Cargo.toml index 4991de7..64b2eb6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,8 @@ name = "controller" path = "src/lib.rs" [features] -default = ["telemetry"] -telemetry = ["opentelemetry-otlp", "opentelemetry_sdk"] +default = [] +telemetry = ["opentelemetry-otlp"] [dependencies] actix-web = "4.4.0" @@ -40,7 +40,7 @@ tracing-subscriber = { version = "0.3.18", features = ["json", "env-filter"] } tracing-opentelemetry = "0.27.0" opentelemetry = { version = "0.26.0", features = ["trace"] } opentelemetry-otlp = { version = "0.26.0", features = ["tokio"], optional = true } -opentelemetry_sdk = { version = "0.26.0", optional = true, features = ["tokio", "rt-tokio"] } +opentelemetry_sdk = { version = "0.26.0", features = ["tokio", "rt-tokio"] } thiserror = "1.0.47" anyhow = "1.0.89" prometheus-client = "0.22.2" diff --git a/src/telemetry.rs b/src/telemetry.rs index 14a6ca6..f60b228 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,7 +1,6 @@ +#![allow(unused_imports)] // some used only for telemetry feature use opentelemetry::trace::{TraceId, TracerProvider}; -use opentelemetry_otlp::WithExportConfig; use opentelemetry_sdk::{runtime, trace as sdktrace, trace::Config, Resource}; -use tracing_opentelemetry::OpenTelemetryLayer; use tracing_subscriber::{prelude::*, EnvFilter, Registry}; /// Fetch an opentelemetry::trace::TraceId as hex through the full tracing stack @@ -16,6 +15,7 @@ pub fn get_trace_id() -> TraceId { .trace_id() } +#[cfg(feature = "telemetry")] fn resource() -> Resource { use opentelemetry::KeyValue; Resource::new([ @@ -26,6 +26,7 @@ fn resource() -> Resource { #[cfg(feature = "telemetry")] fn init_tracer() -> sdktrace::Tracer { + use opentelemetry_otlp::WithExportConfig; let endpoint = std::env::var("OPENTELEMETRY_ENDPOINT_URL").expect("Needs an otel collector"); let exporter = opentelemetry_otlp::new_exporter().tonic().with_endpoint(endpoint); @@ -44,7 +45,7 @@ fn init_tracer() -> sdktrace::Tracer { pub async fn init() { // Setup tracing layers #[cfg(feature = "telemetry")] - let otel = OpenTelemetryLayer::new(init_tracer()); + let otel = tracing_opentelemetry::OpenTelemetryLayer::new(init_tracer()); let logger = tracing_subscriber::fmt::layer().compact(); let env_filter = EnvFilter::try_from_default_env() From ed5e98879dda8ae27e1d88ed2901b030b3d3dea3 Mon Sep 17 00:00:00 2001 From: clux Date: Thu, 10 Oct 2024 00:10:15 +0100 Subject: [PATCH 7/7] only log trace id if we actually have a valid trace id Signed-off-by: clux --- src/controller.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controller.rs b/src/controller.rs index e34bf36..165b9f7 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -59,7 +59,9 @@ pub struct Context { #[instrument(skip(ctx, doc), fields(trace_id))] async fn reconcile(doc: Arc, ctx: Arc) -> Result { let trace_id = telemetry::get_trace_id(); - Span::current().record("trace_id", field::display(&trace_id)); + if trace_id != opentelemetry::trace::TraceId::INVALID { + Span::current().record("trace_id", field::display(&trace_id)); + } let _timer = ctx.metrics.reconcile.count_and_measure(&trace_id); ctx.diagnostics.write().await.last_event = Utc::now(); let ns = doc.namespace().unwrap(); // doc is namespace scoped