use commonware_runtime::{
telemetry::metrics::{histogram, status, Counter, Gauge, MetricsExt as _},
Metrics as RuntimeMetrics,
};
pub struct Metrics {
pub tip: Gauge,
pub digest: status::Counter,
pub acks: status::Counter,
pub certificates: Counter,
pub digest_duration: histogram::Timed,
}
impl Metrics {
pub fn init(context: &impl RuntimeMetrics) -> Self {
let tip = context.gauge("tip", "Lowest height without a certificate");
let digest = context.family(
"digest",
"Number of digests returned by the automaton by status",
);
let acks = context.family("acks", "Number of Ack messages processed by status");
let certificates = context.counter("certificates", "Number of certificates produced");
let digest_duration = context.histogram(
"digest_duration",
"Histogram of application digest durations",
histogram::Buckets::LOCAL,
);
Self {
tip,
digest,
acks,
certificates,
digest_duration: histogram::Timed::new(digest_duration),
}
}
}