From e1a911cac43654ca20b4cf42290c61de1dc78079 Mon Sep 17 00:00:00 2001 From: Marcio Diaz <marcio.diaz@gmail.com> Date: Tue, 26 Nov 2019 18:17:34 +0100 Subject: [PATCH] Add receiver for Grafana (#4211) --- substrate/Cargo.lock | 1 + substrate/client/cli/src/params.rs | 2 ++ substrate/client/tracing/Cargo.toml | 1 + substrate/client/tracing/src/lib.rs | 12 ++++++++++-- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 7bf2fcba019..32995ac322c 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -6578,6 +6578,7 @@ dependencies = [ name = "substrate-tracing" version = "2.0.0" dependencies = [ + "grafana-data-source 2.0.0", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-telemetry 2.0.0", diff --git a/substrate/client/cli/src/params.rs b/substrate/client/cli/src/params.rs index 1324d3419f8..09a18db2078 100644 --- a/substrate/client/cli/src/params.rs +++ b/substrate/client/cli/src/params.rs @@ -265,6 +265,7 @@ arg_enum! { pub enum TracingReceiver { Log, Telemetry, + Grafana, } } @@ -273,6 +274,7 @@ impl Into<substrate_tracing::TracingReceiver> for TracingReceiver { match self { TracingReceiver::Log => substrate_tracing::TracingReceiver::Log, TracingReceiver::Telemetry => substrate_tracing::TracingReceiver::Telemetry, + TracingReceiver::Grafana => substrate_tracing::TracingReceiver::Grafana, } } } diff --git a/substrate/client/tracing/Cargo.toml b/substrate/client/tracing/Cargo.toml index 25a1a7331be..431889cbec6 100644 --- a/substrate/client/tracing/Cargo.toml +++ b/substrate/client/tracing/Cargo.toml @@ -11,6 +11,7 @@ parking_lot = "0.9.0" tracing-core = "0.1.7" substrate-telemetry = { path = "../telemetry" } +grafana-data-source = { path = "../grafana-data-source" } [dev-dependencies] tracing = "0.1.10" diff --git a/substrate/client/tracing/src/lib.rs b/substrate/client/tracing/src/lib.rs index d6fc4a6418d..664d5bf7a94 100644 --- a/substrate/client/tracing/src/lib.rs +++ b/substrate/client/tracing/src/lib.rs @@ -39,6 +39,7 @@ use parking_lot::Mutex; use tracing_core::{event::Event, Level, metadata::Metadata, span::{Attributes, Id, Record}, subscriber::Subscriber}; use substrate_telemetry::{telemetry, SUBSTRATE_INFO}; +use grafana_data_source::{self, record_metrics}; /// Used to configure how to receive the metrics #[derive(Debug, Clone)] @@ -47,6 +48,8 @@ pub enum TracingReceiver { Log, /// Output to telemetry Telemetry, + /// Output to Grafana, + Grafana, } impl Default for TracingReceiver { @@ -59,7 +62,7 @@ impl Default for TracingReceiver { struct SpanDatum { id: u64, name: &'static str, - target: String, + target: &'static str, level: Level, line: u32, start_time: Instant, @@ -124,7 +127,7 @@ impl Subscriber for ProfilingSubscriber { let span_datum = SpanDatum { id: id, name: attrs.metadata().name(), - target: attrs.metadata().target().to_string(), + target: attrs.metadata().target(), level: attrs.metadata().level().clone(), line: attrs.metadata().line().unwrap_or(0), start_time: Instant::now(), @@ -172,6 +175,7 @@ impl ProfilingSubscriber { match self.receiver { TracingReceiver::Log => print_log(span_datum), TracingReceiver::Telemetry => send_telemetry(span_datum), + TracingReceiver::Grafana => send_grafana(span_datum), } } } @@ -196,3 +200,7 @@ fn send_telemetry(span_datum: SpanDatum) { "time" => span_datum.overall_time.as_nanos(), ); } + +fn send_grafana(span_datum: SpanDatum) { + record_metrics!(span_datum.target => span_datum.overall_time.as_nanos()); +} -- GitLab