use once_cell::sync::Lazy;
use tari_metrics::{Histogram, HistogramVec, IntCounter, IntCounterVec, IntGauge, IntGaugeVec};
use crate::protocol::ProtocolId;
pub fn num_sessions(protocol: &ProtocolId) -> IntGauge {
static METER: Lazy<IntGaugeVec> = Lazy::new(|| {
tari_metrics::register_int_gauge_vec(
"comms::rpc::client::num_sessions",
"The number of active clients per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn handshake_counter(protocol: &ProtocolId) -> IntCounter {
static METER: Lazy<IntCounterVec> = Lazy::new(|| {
tari_metrics::register_int_counter_vec(
"comms::rpc::client::handshake_count",
"The number of handshakes per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn handshake_errors(protocol: &ProtocolId) -> IntCounter {
static METER: Lazy<IntCounterVec> = Lazy::new(|| {
tari_metrics::register_int_counter_vec(
"comms::rpc::client::handshake_errors",
"The number of handshake errors per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn client_errors(protocol: &ProtocolId) -> IntCounter {
static METER: Lazy<IntCounterVec> = Lazy::new(|| {
tari_metrics::register_int_counter_vec(
"comms::rpc::client::error_count",
"The number of client errors per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn client_timeouts(protocol: &ProtocolId) -> IntCounter {
static METER: Lazy<IntCounterVec> = Lazy::new(|| {
tari_metrics::register_int_counter_vec(
"comms::rpc::client::error_timeouts",
"The number of client timeouts per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn request_response_latency(protocol: &ProtocolId) -> Histogram {
static METER: Lazy<HistogramVec> = Lazy::new(|| {
tari_metrics::register_histogram_vec(
"comms::rpc::client::request_response_latency",
"A histogram of request to first response latency",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn outbound_request_bytes(protocol: &ProtocolId) -> Histogram {
static METER: Lazy<HistogramVec> = Lazy::new(|| {
tari_metrics::register_histogram_vec(
"comms::rpc::client::outbound_request_bytes",
"Avg. request bytes per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}
pub fn inbound_response_bytes(protocol: &ProtocolId) -> Histogram {
static METER: Lazy<HistogramVec> = Lazy::new(|| {
tari_metrics::register_histogram_vec(
"comms::rpc::client::inbound_response_bytes",
"Avg. response bytes per protocol",
&["protocol"],
)
.unwrap()
});
METER.with_label_values(&[String::from_utf8_lossy(protocol).as_ref()])
}