diff --git a/crates/sui-core/src/authority.rs b/crates/sui-core/src/authority.rs index 572393021a3af..683f0434dc719 100644 --- a/crates/sui-core/src/authority.rs +++ b/crates/sui-core/src/authority.rs @@ -26,7 +26,7 @@ use narwhal_executor::ExecutionStateError; use narwhal_executor::{ExecutionIndices, ExecutionState}; use parking_lot::Mutex; use prometheus::{ - register_histogram_with_registry, register_int_counter_with_registry, + exponential_buckets, register_histogram_with_registry, register_int_counter_with_registry, register_int_gauge_with_registry, Histogram, IntCounter, IntGauge, }; use std::ops::Deref; @@ -128,6 +128,7 @@ pub struct AuthorityMetrics { pub follower_items_loaded: IntCounter, pub follower_connections: IntCounter, pub follower_connections_concurrent: IntGauge, + pub follower_start_seq_num: Histogram, // TODO: consolidate these into GossipMetrics // (issue: https://github.com/MystenLabs/sui/issues/3926) @@ -144,6 +145,9 @@ const POSITIVE_INT_BUCKETS: &[f64] = &[ impl AuthorityMetrics { pub fn new(registry: &prometheus::Registry) -> AuthorityMetrics { + // buckets are: 100, 10k, 1M, 100M, 10B, 1T, 100T, 10Q + // Safe to unwarp because the values are all valid. + let follower_seq_num_buckets = exponential_buckets(100., 100., 8).unwrap(); Self { tx_orders: register_int_counter_with_registry!( "total_transaction_orders", @@ -245,6 +249,13 @@ impl AuthorityMetrics { registry, ) .unwrap(), + follower_start_seq_num: register_histogram_with_registry!( + "follower_start_seq_num", + "The start seq number this validator receives from fullnodes node_sync/follower process", + follower_seq_num_buckets, + registry, + ) + .unwrap(), gossip_queued_count: register_int_counter_with_registry!( "gossip_queued_count", "Number of digests queued from gossip peers", diff --git a/crates/sui-core/src/authority_batch.rs b/crates/sui-core/src/authority_batch.rs index 192aa83219da3..8b9656c31221d 100644 --- a/crates/sui-core/src/authority_batch.rs +++ b/crates/sui-core/src/authority_batch.rs @@ -256,6 +256,10 @@ impl crate::authority::AuthorityState { metrics.follower_connections_concurrent.dec(); }); + metrics + .follower_start_seq_num + .observe(request.start.unwrap_or(0) as f64); + // Register a subscriber to not miss any updates let subscriber = self.subscribe_batch(); diff --git a/crates/sui-core/src/authority_client.rs b/crates/sui-core/src/authority_client.rs index 0f0ee1670af2d..a01cdcdbd6cff 100644 --- a/crates/sui-core/src/authority_client.rs +++ b/crates/sui-core/src/authority_client.rs @@ -242,10 +242,6 @@ impl AuthorityAPI for NetworkAuthorityClient { &self, request: BatchInfoRequest, ) -> Result { - self.metrics - .batch_info_request_start_seq - .observe(request.start.unwrap_or(0) as f64); - let stream = self .client() .batch_info(request) @@ -490,8 +486,6 @@ pub struct NetworkAuthorityClientMetrics { pub handle_object_info_request_latency: Histogram, pub handle_transaction_info_request_latency: Histogram, pub handle_checkpoint_request_latency: Histogram, - - pub batch_info_request_start_seq: Histogram, } impl NetworkAuthorityClientMetrics { @@ -533,12 +527,6 @@ impl NetworkAuthorityClientMetrics { registry ) .unwrap(), - batch_info_request_start_seq: register_histogram_with_registry!( - "batch_info_request_start_seq", - "The start sequences of the batch info requests", - registry - ) - .unwrap(), } }