From 0725620eabe9d63db077b40d009d96eb6194776b Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Fri, 2 Feb 2024 16:39:26 +0100 Subject: [PATCH] Simplyfing the metrics functionality by using meter provider instead of the global meter. --- Cargo.lock | 10 +++++----- apis/python/node/Cargo.toml | 2 +- binaries/runtime/src/lib.rs | 17 +++++++---------- .../extensions/telemetry/metrics/Cargo.toml | 3 ++- .../extensions/telemetry/metrics/src/lib.rs | 3 +++ 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17b82a08..9ce8f9ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1538,7 +1538,7 @@ version = "0.3.2" dependencies = [ "opentelemetry 0.21.0", "opentelemetry-otlp", - "opentelemetry_sdk 0.21.1", + "opentelemetry_sdk 0.21.2", ] [[package]] @@ -3677,7 +3677,7 @@ dependencies = [ "opentelemetry 0.21.0", "opentelemetry-proto", "opentelemetry-semantic-conventions 0.13.0", - "opentelemetry_sdk 0.21.1", + "opentelemetry_sdk 0.21.2", "prost", "thiserror", "tokio", @@ -3691,7 +3691,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2e155ce5cc812ea3d1dffbd1539aed653de4bf4882d60e6e04dcf0901d674e1" dependencies = [ "opentelemetry 0.21.0", - "opentelemetry_sdk 0.21.1", + "opentelemetry_sdk 0.21.2", "prost", "tonic", ] @@ -3768,9 +3768,9 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.21.1" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968ba3f2ca03e90e5187f5e4f46c791ef7f2c163ae87789c8ce5f5ca3b7b7de5" +checksum = "2f16aec8a98a457a52664d69e0091bac3a0abd18ead9b641cb00202ba4e0efe4" dependencies = [ "async-trait", "crossbeam-channel", diff --git a/apis/python/node/Cargo.toml b/apis/python/node/Cargo.toml index 3fbcccb8..6e05782a 100644 --- a/apis/python/node/Cargo.toml +++ b/apis/python/node/Cargo.toml @@ -20,7 +20,7 @@ pyo3 = { workspace = true, features = ["eyre", "abi3-py37"] } eyre = "0.6" serde_yaml = "0.8.23" flume = "0.10.14" -dora-runtime = { workspace = true, features = ["tracing", "python"] } +dora-runtime = { workspace = true, features = ["tracing", "metrics", "python"] } arrow = { workspace = true, features = ["pyarrow"] } pythonize = { workspace = true } futures = "0.3.28" diff --git a/binaries/runtime/src/lib.rs b/binaries/runtime/src/lib.rs index 9d903889..81ef6f5a 100644 --- a/binaries/runtime/src/lib.rs +++ b/binaries/runtime/src/lib.rs @@ -14,7 +14,6 @@ use operator::{run_operator, OperatorEvent, StopReason}; #[cfg(feature = "tracing")] use dora_tracing::set_up_tracing; use std::{ - borrow::Cow, collections::{BTreeMap, BTreeSet, HashMap}, mem, }; @@ -123,19 +122,17 @@ async fn run( init_done: oneshot::Receiver>, ) -> eyre::Result<()> { #[cfg(feature = "metrics")] - let _started = { + let _meter_provider = { use dora_metrics::init_metrics; - use opentelemetry::global; + use opentelemetry::metrics::MeterProvider as _; use opentelemetry_system_metrics::init_process_observer; - let _started = init_metrics().context("Could not create opentelemetry meter")?; - let meter = global::meter(Cow::Borrowed(Box::leak( - config.node_id.to_string().into_boxed_str(), - ))); - init_process_observer(meter).context("could not initiale system metrics observer")?; - _started + let meter_provider = init_metrics().context("Could not create opentelemetry meter")?; + let meter = meter_provider.meter(config.node_id.to_string()); + let _ = + init_process_observer(meter).context("could not initiale system metrics observer")?; + meter_provider }; - init_done .await .wrap_err("the `init_done` channel was closed unexpectedly")? diff --git a/libraries/extensions/telemetry/metrics/Cargo.toml b/libraries/extensions/telemetry/metrics/Cargo.toml index 53e0ade7..c788e90a 100644 --- a/libraries/extensions/telemetry/metrics/Cargo.toml +++ b/libraries/extensions/telemetry/metrics/Cargo.toml @@ -11,4 +11,5 @@ license.workspace = true [dependencies] opentelemetry = { version = "0.21", features = ["metrics"] } opentelemetry-otlp = { version = "0.14.0", features = ["tonic", "metrics"] } -opentelemetry_sdk = { version = "0.21.0", features = ["rt-tokio", "metrics"] } +opentelemetry_sdk = { version = "0.21", features = ["rt-tokio", "metrics"] } + \ No newline at end of file diff --git a/libraries/extensions/telemetry/metrics/src/lib.rs b/libraries/extensions/telemetry/metrics/src/lib.rs index e3c3791c..60e33871 100644 --- a/libraries/extensions/telemetry/metrics/src/lib.rs +++ b/libraries/extensions/telemetry/metrics/src/lib.rs @@ -10,6 +10,8 @@ //! [`sysinfo`]: https://github.com/GuillaumeGomez/sysinfo //! [`opentelemetry-rust`]: https://github.com/open-telemetry/opentelemetry-rust +use std::time::Duration; + use opentelemetry::metrics::{self}; use opentelemetry_sdk::{metrics::MeterProvider, runtime}; @@ -34,5 +36,6 @@ pub fn init_metrics() -> metrics::Result { .tonic() .with_export_config(export_config), ) + .with_period(Duration::from_secs(10)) .build() }