Add receiver for Grafana (#4211)

This commit is contained in:
Marcio Diaz
2019-11-26 18:17:34 +01:00
committed by Gavin Wood
parent 53a482146b
commit e1a911cac4
4 changed files with 14 additions and 2 deletions
+1
View File
@@ -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",
+2
View File
@@ -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,
}
}
}
+1
View File
@@ -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"
+10 -2
View File
@@ -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());
}