From a6ec79ee30f5a7574372f60936cd378bd3dabcb0 Mon Sep 17 00:00:00 2001 From: localhost Date: Wed, 17 May 2023 11:08:49 +0800 Subject: [PATCH] chore: add a uniform prefix to the metrics using the official recommendation of (#1590) --- Cargo.lock | 21 ++++++++++++++++++--- src/common/telemetry/Cargo.toml | 3 ++- src/common/telemetry/src/metric.rs | 9 +++++---- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 345a81f729..51669a1ea3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,6 +53,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + [[package]] name = "aho-corasick" version = "1.0.1" @@ -1837,6 +1846,7 @@ dependencies = [ "console-subscriber", "metrics", "metrics-exporter-prometheus", + "metrics-util", "once_cell", "opentelemetry", "opentelemetry-jaeger", @@ -4909,8 +4919,9 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.11.1" -source = "git+https://github.com/GreptimeTeam/metrics.git?rev=174de287e9f7f9f57c0272be56c95df156489476#174de287e9f7f9f57c0272be56c95df156489476" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8603921e1f54ef386189335f288441af761e0fc61bcb552168d9cedfe63ebc70" dependencies = [ "indexmap", "metrics", @@ -4938,14 +4949,18 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d24dc2dbae22bff6f1f9326ffce828c9f07ef9cc1e8002e5279f845432a30a" dependencies = [ + "aho-corasick 0.7.20", "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.12.3", + "indexmap", "metrics", "num_cpus", + "ordered-float 2.10.0", "parking_lot", "portable-atomic", "quanta", + "radix_trie", "sketches-ddsketch", ] @@ -6751,7 +6766,7 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ - "aho-corasick", + "aho-corasick 1.0.1", "memchr", "regex-syntax 0.7.1", ] diff --git a/src/common/telemetry/Cargo.toml b/src/common/telemetry/Cargo.toml index 571185bba1..f67cffa685 100644 --- a/src/common/telemetry/Cargo.toml +++ b/src/common/telemetry/Cargo.toml @@ -12,7 +12,8 @@ deadlock_detection = ["parking_lot"] backtrace = "0.3" common-error = { path = "../error" } console-subscriber = { version = "0.1", optional = true } -metrics-exporter-prometheus = { git = "https://github.com/GreptimeTeam/metrics.git", rev = "174de287e9f7f9f57c0272be56c95df156489476", default-features = false } +metrics-exporter-prometheus = { version = "0.11", default-features = false } +metrics-util = "0.14.0" metrics.workspace = true once_cell = "1.10" opentelemetry = { version = "0.17", default-features = false, features = [ diff --git a/src/common/telemetry/src/metric.rs b/src/common/telemetry/src/metric.rs index 6a1903e5ec..4ebbd65d85 100644 --- a/src/common/telemetry/src/metric.rs +++ b/src/common/telemetry/src/metric.rs @@ -20,6 +20,7 @@ use std::time::{Duration, Instant}; use metrics::histogram; use metrics_exporter_prometheus::PrometheusBuilder; pub use metrics_exporter_prometheus::PrometheusHandle; +use metrics_util::layers::{Layer, PrefixLayer}; use once_cell::sync::Lazy; static PROMETHEUS_HANDLE: Lazy>>> = @@ -32,9 +33,7 @@ pub fn init_default_metrics_recorder() { /// Init prometheus recorder. fn init_prometheus_recorder() { - let recorder = PrometheusBuilder::new() - .add_global_prefix("greptime".to_string()) - .build_recorder(); + let recorder = PrometheusBuilder::new().build_recorder(); let mut h = PROMETHEUS_HANDLE.as_ref().write().unwrap(); *h = Some(recorder.handle()); // TODO(LFC): separate metrics for testing and metrics for production @@ -47,7 +46,9 @@ fn init_prometheus_recorder() { unsafe { metrics::clear_recorder(); } - match metrics::set_boxed_recorder(Box::new(recorder)) { + let layer = PrefixLayer::new("greptime"); + let layered = layer.layer(recorder); + match metrics::set_boxed_recorder(Box::new(layered)) { Ok(_) => (), Err(err) => crate::warn!("Install prometheus recorder failed, cause: {}", err), };