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