diff --git a/validator_client/src/http_metrics/metrics.rs b/validator_client/src/http_metrics/metrics.rs index c9ad31feb..b4e400c3e 100644 --- a/validator_client/src/http_metrics/metrics.rs +++ b/validator_client/src/http_metrics/metrics.rs @@ -191,6 +191,10 @@ lazy_static::lazy_static! { "Round-trip latency for a simple API endpoint on each BN", &["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>( diff --git a/validator_client/src/latency.rs b/validator_client/src/latency.rs index 9ab9b630b..7e752f292 100644 --- a/validator_client/src/latency.rs +++ b/validator_client/src/latency.rs @@ -36,7 +36,7 @@ pub fn start_latency_service<T: SlotClock + 'static, E: EthSpec>( // Sleep until it's time to perform the measurement. 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 { debug!( log, @@ -48,7 +48,13 @@ pub fn start_latency_service<T: SlotClock + 'static, E: EthSpec>( &metrics::VC_BEACON_NODE_LATENCY, &[&measurement.beacon_node_id], latency, - ) + ); + if i == 0 { + metrics::observe_duration( + &metrics::VC_BEACON_NODE_LATENCY_PRIMARY_ENDPOINT, + latency, + ); + } } } }