From 5873afd832fddddea76c115a3ea235e5297db989 Mon Sep 17 00:00:00 2001 From: Andrei Eres Date: Wed, 25 Jun 2025 11:07:00 +0200 Subject: [PATCH] Add polkadot_parachain_peer_connectivity metric (#8973) # Description Fixes https://github.com/paritytech/polkadot-sdk/issues/8911 Adds `polkadot_parachain_peer_connectivity` histogram metric to better understand connectivity patterns. ## Integration Doesn't affect downstream projects. --------- Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> (cherry picked from commit 1fcaaa4b8f43d4b31624297a4172eed73458f100) --- polkadot/node/network/bridge/src/metrics.rs | 22 +++++++++++++++------ prdoc/pr_8973.prdoc | 9 +++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 prdoc/pr_8973.prdoc diff --git a/polkadot/node/network/bridge/src/metrics.rs b/polkadot/node/network/bridge/src/metrics.rs index 083a2a71aa0f8..91effc88d22ee 100644 --- a/polkadot/node/network/bridge/src/metrics.rs +++ b/polkadot/node/network/bridge/src/metrics.rs @@ -47,12 +47,11 @@ impl Metrics { } pub fn note_peer_count(&self, peer_set: PeerSet, version: ProtocolVersion, count: usize) { - self.0.as_ref().map(|metrics| { - metrics - .peer_count - .with_label_values(&[peer_set_label(peer_set, version)]) - .set(count as u64) - }); + if let Some(metrics) = self.0.as_ref() { + let label = peer_set_label(peer_set, version); + metrics.peer_count.with_label_values(&[label]).set(count as u64); + metrics.peer_connectivity.with_label_values(&[label]).observe(count as f64); + } } pub fn on_notification_received( @@ -131,6 +130,7 @@ impl Metrics { #[derive(Clone)] pub(crate) struct MetricsInner { peer_count: prometheus::GaugeVec, + peer_connectivity: prometheus::HistogramVec, connected_events: prometheus::CounterVec, disconnected_events: prometheus::CounterVec, desired_peer_count: prometheus::GaugeVec, @@ -165,6 +165,16 @@ impl metrics::Metrics for Metrics { )?, registry, )?, + peer_connectivity: prometheus::register( + prometheus::HistogramVec::new( + prometheus::HistogramOpts::new( + "polkadot_parachain_peer_connectivity", + "Histogram of peer counts on a parachain-related peer-set to track connectivity patterns", + ).buckets(vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 40.0, 50.0, 100.0, 250.0, 500.0, 1000.0]), + &["protocol"] + )?, + registry, + )?, connected_events: prometheus::register( prometheus::CounterVec::new( prometheus::Opts::new( diff --git a/prdoc/pr_8973.prdoc b/prdoc/pr_8973.prdoc new file mode 100644 index 0000000000000..5e43d3b464e79 --- /dev/null +++ b/prdoc/pr_8973.prdoc @@ -0,0 +1,9 @@ +title: Add polkadot_parachain_peer_connectivity metric +doc: +- audience: Node Dev + description: |- + Adds `polkadot_parachain_peer_connectivity` histogram metric to better understand connectivity patterns. + +crates: +- name: polkadot-network-bridge + bump: patch