mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-06 02:08:02 +00:00
Add metrics about block requests (#5811)
* Add metrics about block requests * Apply suggestions from code review Co-Authored-By: Max Inden <mail@max-inden.de> Co-authored-by: Gavin Wood <i@gavwood.com> Co-authored-by: Max Inden <mail@max-inden.de>
This commit is contained in:
@@ -817,6 +817,9 @@ struct Metrics {
|
||||
peerset_num_requested: Gauge<U64>,
|
||||
pending_connections: Gauge<U64>,
|
||||
pending_connections_errors_total: CounterVec<U64>,
|
||||
requests_in_total: HistogramVec,
|
||||
requests_out_finished: HistogramVec,
|
||||
requests_out_started_total: CounterVec<U64>,
|
||||
}
|
||||
|
||||
impl Metrics {
|
||||
@@ -965,6 +968,35 @@ impl Metrics {
|
||||
),
|
||||
&["reason"]
|
||||
)?, registry)?,
|
||||
requests_in_total: register(HistogramVec::new(
|
||||
HistogramOpts {
|
||||
common_opts: Opts::new(
|
||||
"sub_libp2p_requests_in_total",
|
||||
"Total number of requests received and answered"
|
||||
),
|
||||
buckets: prometheus_endpoint::exponential_buckets(0.001, 2.0, 16)
|
||||
.expect("parameters are always valid values; qed"),
|
||||
},
|
||||
&["protocol"]
|
||||
)?, registry)?,
|
||||
requests_out_finished: register(HistogramVec::new(
|
||||
HistogramOpts {
|
||||
common_opts: Opts::new(
|
||||
"sub_libp2p_requests_out_finished",
|
||||
"Time between a request's start and finish (successful or not)"
|
||||
),
|
||||
buckets: prometheus_endpoint::exponential_buckets(0.001, 2.0, 16)
|
||||
.expect("parameters are always valid values; qed"),
|
||||
},
|
||||
&["protocol"]
|
||||
)?, registry)?,
|
||||
requests_out_started_total: register(CounterVec::new(
|
||||
Opts::new(
|
||||
"sub_libp2p_requests_out_started_total",
|
||||
"Total number of requests emitted"
|
||||
),
|
||||
&["protocol"]
|
||||
)?, registry)?,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1084,6 +1116,27 @@ impl<B: BlockT + 'static, H: ExHashT> Future for NetworkWorker<B, H> {
|
||||
}
|
||||
this.import_queue.import_finality_proof(origin, hash, nb, proof);
|
||||
},
|
||||
Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::AnsweredRequest { protocol, build_time, .. })) => {
|
||||
if let Some(metrics) = this.metrics.as_ref() {
|
||||
metrics.requests_in_total
|
||||
.with_label_values(&[&maybe_utf8_bytes_to_string(&protocol)])
|
||||
.observe(build_time.as_secs_f64());
|
||||
}
|
||||
},
|
||||
Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::RequestStarted { protocol, .. })) => {
|
||||
if let Some(metrics) = this.metrics.as_ref() {
|
||||
metrics.requests_out_started_total
|
||||
.with_label_values(&[&maybe_utf8_bytes_to_string(&protocol)])
|
||||
.inc();
|
||||
}
|
||||
},
|
||||
Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::RequestFinished { protocol, request_duration, .. })) => {
|
||||
if let Some(metrics) = this.metrics.as_ref() {
|
||||
metrics.requests_out_finished
|
||||
.with_label_values(&[&maybe_utf8_bytes_to_string(&protocol)])
|
||||
.observe(request_duration.as_secs_f64());
|
||||
}
|
||||
},
|
||||
Poll::Ready(SwarmEvent::Behaviour(BehaviourOut::RandomKademliaStarted(protocol))) => {
|
||||
if let Some(metrics) = this.metrics.as_ref() {
|
||||
metrics.kademlia_random_queries_total
|
||||
|
||||
Reference in New Issue
Block a user