Browse Source

Simplyfing the metrics functionality by using meter provider instead of

the global meter.
tags/v0.3.3-rc1
haixuanTao 2 years ago
parent
commit
0725620eab
5 changed files with 18 additions and 17 deletions
  1. +5
    -5
      Cargo.lock
  2. +1
    -1
      apis/python/node/Cargo.toml
  3. +7
    -10
      binaries/runtime/src/lib.rs
  4. +2
    -1
      libraries/extensions/telemetry/metrics/Cargo.toml
  5. +3
    -0
      libraries/extensions/telemetry/metrics/src/lib.rs

+ 5
- 5
Cargo.lock View File

@@ -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",


+ 1
- 1
apis/python/node/Cargo.toml View File

@@ -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"


+ 7
- 10
binaries/runtime/src/lib.rs View File

@@ -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<Result<()>>,
) -> 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")?


+ 2
- 1
libraries/extensions/telemetry/metrics/Cargo.toml View File

@@ -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"] }

+ 3
- 0
libraries/extensions/telemetry/metrics/src/lib.rs View File

@@ -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<MeterProvider> {
.tonic()
.with_export_config(export_config),
)
.with_period(Duration::from_secs(10))
.build()
}

Loading…
Cancel
Save