diff options
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/stats.rs | 3 | ||||
| -rw-r--r-- | src/api/stats/prometheus.rs | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/api/stats.rs b/src/api/stats.rs index 3851ef7..306b6a2 100644 --- a/src/api/stats.rs +++ b/src/api/stats.rs @@ -187,6 +187,8 @@ struct TopologyView { stable: usize, neighbours: usize, stable_neighbours: usize, + /// Neighbours by our transports (`topology::Summary`). + neighbours_by_transport: std::collections::BTreeMap<String, usize>, /// Our own writer's tree (`swarm::tree::own_shape`); absent while we aren't in the /// member list's graph. own_tree: Option<OwnTree>, @@ -382,6 +384,7 @@ pub(crate) async fn collect(state: &AppState, list: &PeerListResponse) -> StatsR stable: s.stable, neighbours: s.neighbours, stable_neighbours: s.stable_neighbours, + neighbours_by_transport: s.neighbours_by_transport, own_tree, }), }, diff --git a/src/api/stats/prometheus.rs b/src/api/stats/prometheus.rs index db3cef3..ffe6593 100644 --- a/src/api/stats/prometheus.rs +++ b/src/api/stats/prometheus.rs @@ -713,6 +713,18 @@ pub(super) fn render(stats: &StatsResponse, list: &PeerListResponse) -> String { "Current neighbours with the stable tier.", view.stable_neighbours as f64, ); + out.family( + "neighbours_on", + "gauge", + "Current neighbours with an address on one of this node's transports, by transport.", + ); + for (transport, neighbours) in &view.neighbours_by_transport { + out.sample( + "neighbours_on", + &[("transport", transport)], + *neighbours as f64, + ); + } if let Some(tree) = &view.own_tree { out.single( "own_tree_members", |
