Browse Source

Use current tokio threadpool and update otlp to latest version

tags/v0.3.11-rc1
haixuanTao 10 months ago
parent
commit
48cb5ae709
4 changed files with 191 additions and 246 deletions
  1. +145
    -209
      Cargo.lock
  2. +18
    -8
      apis/rust/node/src/node/mod.rs
  3. +8
    -4
      libraries/extensions/telemetry/metrics/Cargo.toml
  4. +20
    -25
      libraries/extensions/telemetry/metrics/src/lib.rs

+ 145
- 209
Cargo.lock View File

@@ -611,7 +611,7 @@ dependencies = [
"arrow-schema 54.2.1",
"chrono",
"half",
"indexmap 2.6.0",
"indexmap 2.8.0",
"lexical-core",
"num",
"serde",
@@ -1254,34 +1254,6 @@ dependencies = [
"thiserror 1.0.66",
]

[[package]]
name = "axum"
version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
dependencies = [
"async-trait",
"axum-core 0.3.4",
"bitflags 1.3.2",
"bytes",
"futures-util",
"http 0.2.12",
"http-body 0.4.6",
"hyper 0.14.30",
"itoa",
"matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
"rustversion",
"serde",
"sync_wrapper 0.1.2",
"tower",
"tower-layer",
"tower-service",
]

[[package]]
name = "axum"
version = "0.7.5"
@@ -1289,7 +1261,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
dependencies = [
"async-trait",
"axum-core 0.4.5",
"axum-core",
"bytes",
"futures-util",
"http 1.1.0",
@@ -1309,23 +1281,6 @@ dependencies = [
"tower-service",
]

[[package]]
name = "axum-core"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
dependencies = [
"async-trait",
"bytes",
"futures-util",
"http 0.2.12",
"http-body 0.4.6",
"mime",
"rustversion",
"tower-layer",
"tower-service",
]

[[package]]
name = "axum-core"
version = "0.4.5"
@@ -2813,10 +2768,10 @@ name = "dora-metrics"
version = "0.3.10"
dependencies = [
"eyre",
"opentelemetry 0.22.0",
"opentelemetry 0.28.0",
"opentelemetry-otlp",
"opentelemetry-system-metrics",
"opentelemetry_sdk 0.22.1",
"opentelemetry_sdk 0.28.0",
]

[[package]]
@@ -2909,7 +2864,7 @@ dependencies = [
"eyre",
"futures",
"hyper 0.14.30",
"indexmap 2.6.0",
"indexmap 2.8.0",
"mime_guess",
"serde",
"serde_json",
@@ -4363,7 +4318,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
"indexmap 2.6.0",
"indexmap 2.8.0",
"slab",
"tokio",
"tokio-util",
@@ -4382,7 +4337,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.1.0",
"indexmap 2.6.0",
"indexmap 2.8.0",
"slab",
"tokio",
"tokio-util",
@@ -4723,18 +4678,6 @@ dependencies = [
"webpki-roots 0.26.8",
]

[[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.2"
@@ -4870,9 +4813,9 @@ dependencies = [

[[package]]
name = "indexmap"
version = "2.6.0"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
@@ -5083,15 +5026,6 @@ dependencies = [
"either",
]

[[package]]
name = "itertools"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
dependencies = [
"either",
]

[[package]]
name = "itertools"
version = "0.13.0"
@@ -5841,7 +5775,7 @@ dependencies = [
"cfg_aliases",
"codespan-reporting",
"hexf-parse",
"indexmap 2.6.0",
"indexmap 2.8.0",
"log",
"rustc-hash 1.1.0",
"spirv",
@@ -6307,12 +6241,12 @@ dependencies = [

[[package]]
name = "nvml-wrapper"
version = "0.9.0"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cd21b9f5a1cce3c3515c9ffa85f5c7443e07162dae0ccf4339bb7ca38ad3454"
checksum = "0c9bff0aa1d48904a1385ea2a8b97576fbdcbc9a3cfccd0d31fe978e1c4038c5"
dependencies = [
"bitflags 1.3.2",
"libloading 0.7.4",
"bitflags 2.8.0",
"libloading 0.8.4",
"nvml-wrapper-sys",
"static_assertions",
"thiserror 1.0.66",
@@ -6321,11 +6255,11 @@ dependencies = [

[[package]]
name = "nvml-wrapper-sys"
version = "0.7.0"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c961a2ea9e91c59a69b78e69090f6f5b867bb46c0c56de9482da232437c4987e"
checksum = "698d45156f28781a4e79652b6ebe2eaa0589057d588d3aec1333f6466f13fcb5"
dependencies = [
"libloading 0.7.4",
"libloading 0.8.4",
]

[[package]]
@@ -6604,17 +6538,30 @@ dependencies = [

[[package]]
name = "opentelemetry"
version = "0.22.0"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900d57987be3f2aeb70d385fff9b27fb74c5723cc9a52d904d4f9c807a0667bf"
checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426"
dependencies = [
"futures-core",
"futures-sink",
"js-sys",
"once_cell",
"pin-project-lite",
"thiserror 1.0.66",
"urlencoding",
"thiserror 2.0.9",
"tracing",
]

[[package]]
name = "opentelemetry-http"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253"
dependencies = [
"async-trait",
"bytes",
"http 1.1.0",
"opentelemetry 0.28.0",
"reqwest 0.12.8",
"tracing",
]

[[package]]
@@ -6628,7 +6575,7 @@ dependencies = [
"futures-executor",
"once_cell",
"opentelemetry 0.18.0",
"opentelemetry-semantic-conventions 0.10.0",
"opentelemetry-semantic-conventions",
"thiserror 1.0.66",
"thrift 0.16.0",
"tokio",
@@ -6636,33 +6583,35 @@ dependencies = [

[[package]]
name = "opentelemetry-otlp"
version = "0.15.0"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a016b8d9495c639af2145ac22387dcb88e44118e45320d9238fbf4e7889abcb"
checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91"
dependencies = [
"async-trait",
"futures-core",
"http 0.2.12",
"opentelemetry 0.22.0",
"http 1.1.0",
"opentelemetry 0.28.0",
"opentelemetry-http",
"opentelemetry-proto",
"opentelemetry-semantic-conventions 0.14.0",
"opentelemetry_sdk 0.22.1",
"prost 0.12.6",
"thiserror 1.0.66",
"opentelemetry_sdk 0.28.0",
"prost",
"reqwest 0.12.8",
"thiserror 2.0.9",
"tokio",
"tonic 0.11.0",
"tonic",
"tracing",
]

[[package]]
name = "opentelemetry-proto"
version = "0.5.0"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a8fddc9b68f5b80dae9d6f510b88e02396f006ad48cac349411fbecc80caae4"
checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d"
dependencies = [
"opentelemetry 0.22.0",
"opentelemetry_sdk 0.22.1",
"prost 0.12.6",
"tonic 0.11.0",
"opentelemetry 0.28.0",
"opentelemetry_sdk 0.28.0",
"prost",
"tonic",
]

[[package]]
@@ -6674,23 +6623,18 @@ dependencies = [
"opentelemetry 0.18.0",
]

[[package]]
name = "opentelemetry-semantic-conventions"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9ab5bd6c42fb9349dcf28af2ba9a0667f697f9bdcca045d39f2cec5543e2910"

[[package]]
name = "opentelemetry-system-metrics"
version = "0.1.8"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dca748d4fe59e208f6c71bde86573d326f98ed29696d31dbf7d2454b8f1af2d"
checksum = "61aae6ffd9e461eba3216e6bbf780724b607039441118e0c6284d98931fcbbad"
dependencies = [
"eyre",
"indexmap 1.9.3",
"indexmap 2.8.0",
"nvml-wrapper",
"opentelemetry 0.22.0",
"sysinfo 0.29.11",
"opentelemetry 0.28.0",
"sysinfo 0.33.1",
"tokio",
"tracing",
]

@@ -6734,24 +6678,23 @@ dependencies = [

[[package]]
name = "opentelemetry_sdk"
version = "0.22.1"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e90c7113be649e31e9a0f8b5ee24ed7a16923b322c3c5ab6367469c049d6b7e"
checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570"
dependencies = [
"async-trait",
"crossbeam-channel",
"futures-channel",
"futures-executor",
"futures-util",
"glob",
"once_cell",
"opentelemetry 0.22.0",
"ordered-float 4.6.0",
"opentelemetry 0.28.0",
"percent-encoding",
"rand",
"thiserror 1.0.66",
"serde_json",
"thiserror 2.0.9",
"tokio",
"tokio-stream",
"tracing",
]

[[package]]
@@ -7053,7 +6996,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
"indexmap 2.6.0",
"indexmap 2.8.0",
]

[[package]]
@@ -7212,7 +7155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9"
dependencies = [
"base64 0.21.7",
"indexmap 2.6.0",
"indexmap 2.8.0",
"line-wrap",
"quick-xml 0.31.0",
"serde",
@@ -7529,16 +7472,6 @@ dependencies = [
"syn 2.0.94",
]

[[package]]
name = "prost"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
dependencies = [
"bytes",
"prost-derive 0.12.6",
]

[[package]]
name = "prost"
version = "0.13.4"
@@ -7546,20 +7479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec"
dependencies = [
"bytes",
"prost-derive 0.13.4",
]

[[package]]
name = "prost-derive"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
dependencies = [
"anyhow",
"itertools 0.12.1",
"proc-macro2",
"quote",
"syn 2.0.94",
"prost-derive",
]

[[package]]
@@ -8554,14 +8474,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d3731719bf29d23b0922813f3cfeaf00eda303dfaa47821065a225b1a07b884"
dependencies = [
"arrow 53.4.0",
"prost 0.13.4",
"prost",
"re_build_info",
"re_byte_size",
"re_log_types",
"re_sorbet",
"re_tuid",
"thiserror 1.0.66",
"tonic 0.12.3",
"tonic",
"tonic-web-wasm-client",
]

@@ -9367,7 +9287,7 @@ dependencies = [
"half",
"home",
"image",
"indexmap 2.6.0",
"indexmap 2.8.0",
"itertools 0.13.0",
"linked-hash-map",
"ndarray 0.16.1",
@@ -9661,6 +9581,7 @@ checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
dependencies = [
"base64 0.22.1",
"bytes",
"futures-channel",
"futures-core",
"futures-util",
"http 1.1.0",
@@ -10592,7 +10513,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap 2.6.0",
"indexmap 2.8.0",
"itoa",
"ryu",
"serde",
@@ -11284,9 +11205,9 @@ dependencies = [

[[package]]
name = "sysinfo"
version = "0.29.11"
version = "0.30.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666"
checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
dependencies = [
"cfg-if 1.0.0",
"core-foundation-sys",
@@ -11294,22 +11215,21 @@ dependencies = [
"ntapi",
"once_cell",
"rayon",
"winapi 0.3.9",
"windows 0.52.0",
]

[[package]]
name = "sysinfo"
version = "0.30.13"
version = "0.33.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01"
dependencies = [
"cfg-if 1.0.0",
"core-foundation-sys",
"libc",
"memchr",
"ntapi",
"once_cell",
"rayon",
"windows 0.52.0",
"windows 0.57.0",
]

[[package]]
@@ -11671,16 +11591,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"
@@ -11757,7 +11667,7 @@ version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
dependencies = [
"indexmap 2.6.0",
"indexmap 2.8.0",
"serde",
"serde_spanned",
"toml_datetime",
@@ -11779,40 +11689,13 @@ version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
"indexmap 2.6.0",
"indexmap 2.8.0",
"serde",
"serde_spanned",
"toml_datetime",
"winnow",
]

[[package]]
name = "tonic"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
dependencies = [
"async-stream",
"async-trait",
"axum 0.6.20",
"base64 0.21.7",
"bytes",
"h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"hyper 0.14.30",
"hyper-timeout 0.4.1",
"percent-encoding",
"pin-project",
"prost 0.12.6",
"tokio",
"tokio-stream",
"tower",
"tower-layer",
"tower-service",
"tracing",
]

[[package]]
name = "tonic"
version = "0.12.3"
@@ -11821,7 +11704,7 @@ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
dependencies = [
"async-stream",
"async-trait",
"axum 0.7.5",
"axum",
"base64 0.22.1",
"bytes",
"h2 0.4.7",
@@ -11829,11 +11712,11 @@ dependencies = [
"http-body 1.0.0",
"http-body-util",
"hyper 1.4.1",
"hyper-timeout 0.5.2",
"hyper-timeout",
"hyper-util",
"percent-encoding",
"pin-project",
"prost 0.13.4",
"prost",
"socket2 0.5.7",
"tokio",
"tokio-stream",
@@ -11860,7 +11743,7 @@ dependencies = [
"js-sys",
"pin-project",
"thiserror 1.0.66",
"tonic 0.12.3",
"tonic",
"tower-service",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -12777,7 +12660,7 @@ dependencies = [
"bitflags 2.8.0",
"cfg_aliases",
"document-features",
"indexmap 2.6.0",
"indexmap 2.8.0",
"log",
"naga",
"once_cell",
@@ -12958,6 +12841,16 @@ dependencies = [
"windows-targets 0.52.6",
]

[[package]]
name = "windows"
version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
dependencies = [
"windows-core 0.57.0",
"windows-targets 0.52.6",
]

[[package]]
name = "windows"
version = "0.58.0"
@@ -12977,19 +12870,42 @@ dependencies = [
"windows-targets 0.52.6",
]

[[package]]
name = "windows-core"
version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
dependencies = [
"windows-implement 0.57.0",
"windows-interface 0.57.0",
"windows-result 0.1.2",
"windows-targets 0.52.6",
]

[[package]]
name = "windows-core"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
dependencies = [
"windows-implement",
"windows-interface",
"windows-result",
"windows-implement 0.58.0",
"windows-interface 0.58.0",
"windows-result 0.2.0",
"windows-strings",
"windows-targets 0.52.6",
]

[[package]]
name = "windows-implement"
version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.94",
]

[[package]]
name = "windows-implement"
version = "0.58.0"
@@ -13001,6 +12917,17 @@ dependencies = [
"syn 2.0.94",
]

[[package]]
name = "windows-interface"
version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.94",
]

[[package]]
name = "windows-interface"
version = "0.58.0"
@@ -13018,11 +12945,20 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
dependencies = [
"windows-result",
"windows-result 0.2.0",
"windows-strings",
"windows-targets 0.52.6",
]

[[package]]
name = "windows-result"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
dependencies = [
"windows-targets 0.52.6",
]

[[package]]
name = "windows-result"
version = "0.2.0"
@@ -13038,7 +12974,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
dependencies = [
"windows-result",
"windows-result 0.2.0",
"windows-targets 0.52.6",
]



+ 18
- 8
apis/rust/node/src/node/mod.rs View File

@@ -29,13 +29,13 @@ use std::{
sync::Arc,
time::Duration,
};
use tokio::runtime::Runtime;
use tracing::{info, warn};

#[cfg(feature = "metrics")]
use dora_metrics::init_meter_provider;
#[cfg(feature = "tracing")]
use dora_tracing::set_up_tracing;
use tokio::runtime::Handle;

pub mod arrow_utils;
mod control_channel;
@@ -56,7 +56,7 @@ pub struct DoraNode {

dataflow_descriptor: Descriptor,
warned_unknown_output: BTreeSet<DataId>,
_rt: Runtime,
_rt: Handle,
}

impl DoraNode {
@@ -136,15 +136,25 @@ impl DoraNode {
} = node_config;
let clock = Arc::new(uhlc::HLC::default());
let input_config = run_config.inputs.clone();
let rt = tokio::runtime::Builder::new_multi_thread()
.worker_threads(2)
.enable_all()
.build()
.context("tokio runtime failed")?;

let rt = match Handle::try_current() {
Ok(rt) => rt,
Err(_) => tokio::runtime::Builder::new_multi_thread()
.worker_threads(2)
.enable_all()
.build()
.context("tokio runtime failed")?
.handle()
.clone(),
};

let id = node_id.to_string();
#[cfg(feature = "metrics")]
rt.spawn(async {
if let Err(e) = init_meter_provider(id).context("failed to init metrics provider") {
if let Err(e) = init_meter_provider(id)
.await
.context("failed to init metrics provider")
{
warn!("could not create metric provider with err: {:#?}", e);
}
});


+ 8
- 4
libraries/extensions/telemetry/metrics/Cargo.toml View File

@@ -10,8 +10,12 @@ repository.workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
opentelemetry = { version = "0.22.0", features = ["metrics"] }
opentelemetry-otlp = { version = "0.15.0", features = ["tonic", "metrics"] }
opentelemetry_sdk = { version = "0.22.0", features = ["rt-tokio", "metrics"] }
opentelemetry = { version = "0.28.0", features = ["metrics"] }
opentelemetry-otlp = { version = "0.28.0", features = [
"tonic",
"metrics",
"grpc-tonic",
] }
opentelemetry_sdk = { version = "0.28.0", features = ["rt-tokio", "metrics"] }
eyre = "0.6.12"
opentelemetry-system-metrics = { version = "0.1.8" }
opentelemetry-system-metrics = { version = "0.3.0" }

+ 20
- 25
libraries/extensions/telemetry/metrics/src/lib.rs View File

@@ -10,40 +10,35 @@
//! [`sysinfo`]: https://github.com/GuillaumeGomez/sysinfo
//! [`opentelemetry-rust`]: https://github.com/open-telemetry/opentelemetry-rust

use std::time::Duration;

use eyre::{Context, Result};
use opentelemetry::metrics::{self, MeterProvider as _};
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
use opentelemetry_sdk::{metrics::SdkMeterProvider, runtime};
use eyre::Result;
use opentelemetry::{global, InstrumentationScope};
use opentelemetry_otlp::MetricExporter;
use opentelemetry_sdk::metrics::SdkMeterProvider;
use opentelemetry_system_metrics::init_process_observer;
/// Init opentelemetry meter
///
/// Use the default Opentelemetry exporter with default config
/// TODO: Make Opentelemetry configurable
///
pub fn init_metrics() -> metrics::Result<SdkMeterProvider> {
let endpoint = std::env::var("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT")
.unwrap_or_else(|_| "http://localhost:4317".to_string());
let export_config = ExportConfig {
endpoint,
..ExportConfig::default()
};
pub fn init_metrics() -> SdkMeterProvider {
let exporter = MetricExporter::builder()
.with_tonic()
.build()
.expect("Failed to create metric exporter");

opentelemetry_otlp::new_pipeline()
.metrics(runtime::Tokio)
.with_exporter(
opentelemetry_otlp::new_exporter()
.tonic()
.with_export_config(export_config),
)
.with_period(Duration::from_secs(10))
SdkMeterProvider::builder()
.with_periodic_exporter(exporter)
.build()
}

pub fn init_meter_provider(meter_id: String) -> Result<SdkMeterProvider> {
let meter_provider = init_metrics().context("Could not create opentelemetry meter")?;
let meter = meter_provider.meter(meter_id);
init_process_observer(meter).context("could not initiate system metrics observer")?;
pub async fn init_meter_provider(meter_id: String) -> Result<SdkMeterProvider> {
let meter_provider = init_metrics();
global::set_meter_provider(meter_provider.clone());
let scope = InstrumentationScope::builder(meter_id)
.with_version("1.0")
.build();
let meter = global::meter_with_scope(scope);

init_process_observer(meter).await.unwrap();
Ok(meter_provider)
}

Loading…
Cancel
Save