From e13d027567f781c9729a518913b21ec4ee273039 Mon Sep 17 00:00:00 2001 From: tv Date: Wed, 28 Oct 2026 11:57:54 +0100 Subject: peers from member list start as unknown --- src/api/stats/prometheus.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/api/stats') diff --git a/src/api/stats/prometheus.rs b/src/api/stats/prometheus.rs index 9cbeff4..8b37864 100644 --- a/src/api/stats/prometheus.rs +++ b/src/api/stats/prometheus.rs @@ -117,6 +117,7 @@ struct Peer { key: String, alias: Option, neighbour: bool, + unknown: bool, dormant: bool, last_seen_secs: Option, last_sync_secs: Option, @@ -143,6 +144,7 @@ async fn peers(state: &AppState) -> Vec { let peer_state = peer_state.lock().await; peers.push(Peer { neighbour, + unknown: peer_state.liveness == Liveness::Unknown, dormant: matches!(peer_state.liveness, Liveness::Dormant { .. }), last_seen_secs: peer_state .last_seen @@ -853,6 +855,14 @@ pub(super) async fn render(state: &AppState, stats: &StatsResponse) -> String { flag(peer.neighbour), ); } + out.family( + "peer_unknown", + "gauge", + "1 while nothing was heard from the peer since this node started.", + ); + for peer in &peers { + out.sample("peer_unknown", &[("peer", &peer.key)], flag(peer.unknown)); + } out.family("peer_dormant", "gauge", "1 while the peer is dormant."); for peer in &peers { out.sample("peer_dormant", &[("peer", &peer.key)], flag(peer.dormant)); -- cgit v1.3.1