Default settings. No change in behaviour; the tree was last formatted before the lecture work and had drifted to a mix of line widths. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
88 lines
2.6 KiB
Rust
88 lines
2.6 KiB
Rust
//! Process-wide Prometheus metrics, registered on the default registry.
|
|
|
|
use std::sync::LazyLock;
|
|
|
|
use bgp_packet::message::Message;
|
|
use prometheus::{
|
|
IntCounter, IntCounterVec, IntGauge, register_int_counter, register_int_counter_vec,
|
|
register_int_gauge,
|
|
};
|
|
|
|
pub static MESSAGES_SENT: LazyLock<IntCounterVec> = LazyLock::new(|| {
|
|
register_int_counter_vec!(
|
|
"bgp_messages_sent_total",
|
|
"BGP messages sent, by type",
|
|
&["type"]
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static MESSAGES_RECEIVED: LazyLock<IntCounterVec> = LazyLock::new(|| {
|
|
register_int_counter_vec!(
|
|
"bgp_messages_received_total",
|
|
"BGP messages received, by type",
|
|
&["type"]
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static SESSIONS_ESTABLISHED_TOTAL: LazyLock<IntCounter> = LazyLock::new(|| {
|
|
register_int_counter!(
|
|
"bgp_sessions_established_total",
|
|
"Sessions that reached Established"
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static SESSIONS_ESTABLISHED: LazyLock<IntGauge> = LazyLock::new(|| {
|
|
register_int_gauge!(
|
|
"bgp_sessions_established",
|
|
"Sessions currently in Established"
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static COLLISIONS: LazyLock<IntCounterVec> = LazyLock::new(|| {
|
|
register_int_counter_vec!(
|
|
"bgp_connection_collisions_total",
|
|
"Connection collisions resolved, by which connection was closed",
|
|
&["closed"]
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static LOCAL_ROUTES: LazyLock<IntGauge> = LazyLock::new(|| {
|
|
register_int_gauge!("bgp_local_routes", "Locally originated routes")
|
|
.expect("metric registration")
|
|
});
|
|
|
|
pub static ADJ_RIB_IN_ROUTES: LazyLock<IntGauge> = LazyLock::new(|| {
|
|
register_int_gauge!(
|
|
"bgp_adj_rib_in_routes",
|
|
"Routes held in Adj-RIB-In across all peers"
|
|
)
|
|
.expect("metric registration")
|
|
});
|
|
|
|
/// Forces registration of every metric so they appear in scrapes before
|
|
/// their first observation.
|
|
pub fn init() {
|
|
LazyLock::force(&MESSAGES_SENT);
|
|
LazyLock::force(&MESSAGES_RECEIVED);
|
|
LazyLock::force(&SESSIONS_ESTABLISHED_TOTAL);
|
|
LazyLock::force(&SESSIONS_ESTABLISHED);
|
|
LazyLock::force(&COLLISIONS);
|
|
LazyLock::force(&LOCAL_ROUTES);
|
|
LazyLock::force(&ADJ_RIB_IN_ROUTES);
|
|
}
|
|
|
|
pub fn message_type_name(msg: &Message) -> &'static str {
|
|
match msg {
|
|
Message::Open(_) => "open",
|
|
Message::Update(_) => "update",
|
|
Message::Notification(_) => "notification",
|
|
Message::KeepAlive => "keepalive",
|
|
Message::RouteRefresh => "route_refresh",
|
|
}
|
|
}
|