Skip to content
Snippets Groups Projects
Commit e1a911ca authored by Marcio Diaz's avatar Marcio Diaz Committed by Gavin Wood
Browse files

Add receiver for Grafana (#4211)

parent 53a48214
No related merge requests found
......@@ -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",
......
......@@ -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,
}
}
}
......
......@@ -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"
......@@ -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());
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment