Add VC metric for primary BN latency (#4051)

## Issue Addressed

NA

## Proposed Changes

In #4024 we added metrics to expose the latency measurements from a VC to each BN. Whilst playing with these new metrics on our infra I realised it would be great to have a single metric to make sure that the primary BN for each VC has a reasonable latency. With the current "metrics for all BNs" it's hard to tell which is the primary.

## Additional Info

NA
This commit is contained in:
Paul Hauner 2023-03-06 04:08:49 +00:00
parent f775404c10
commit 3ad77fb52c
2 changed files with 12 additions and 2 deletions

View File

@ -191,6 +191,10 @@ lazy_static::lazy_static! {
"Round-trip latency for a simple API endpoint on each BN", "Round-trip latency for a simple API endpoint on each BN",
&["endpoint"] &["endpoint"]
); );
pub static ref VC_BEACON_NODE_LATENCY_PRIMARY_ENDPOINT: Result<Histogram> = try_create_histogram(
"vc_beacon_node_latency_primary_endpoint",
"Round-trip latency for the primary BN endpoint",
);
} }
pub fn gather_prometheus_metrics<T: EthSpec>( pub fn gather_prometheus_metrics<T: EthSpec>(

View File

@ -36,7 +36,7 @@ pub fn start_latency_service<T: SlotClock + 'static, E: EthSpec>(
// Sleep until it's time to perform the measurement. // Sleep until it's time to perform the measurement.
sleep(sleep_time).await; sleep(sleep_time).await;
for measurement in beacon_nodes.measure_latency().await { for (i, measurement) in beacon_nodes.measure_latency().await.iter().enumerate() {
if let Some(latency) = measurement.latency { if let Some(latency) = measurement.latency {
debug!( debug!(
log, log,
@ -48,7 +48,13 @@ pub fn start_latency_service<T: SlotClock + 'static, E: EthSpec>(
&metrics::VC_BEACON_NODE_LATENCY, &metrics::VC_BEACON_NODE_LATENCY,
&[&measurement.beacon_node_id], &[&measurement.beacon_node_id],
latency, latency,
) );
if i == 0 {
metrics::observe_duration(
&metrics::VC_BEACON_NODE_LATENCY_PRIMARY_ENDPOINT,
latency,
);
}
} }
} }
} }