pub struct EpochMetrics {Show 32 fields
pub current_epoch: IntGauge,
pub current_voting_right: IntGauge,
pub epoch_total_duration: IntGauge,
pub epoch_checkpoint_count: IntGauge,
pub epoch_transaction_count: IntGauge,
pub epoch_total_gas_reward: IntGauge,
pub epoch_pending_certs_processed_time_since_epoch_close_ms: IntGauge,
pub epoch_end_of_publish_quorum_time_since_epoch_close_ms: IntGauge,
pub epoch_last_checkpoint_created_time_since_epoch_close_ms: IntGauge,
pub epoch_reconfig_start_time_since_epoch_close_ms: IntGauge,
pub epoch_validator_halt_duration_ms: IntGauge,
pub epoch_first_checkpoint_created_time_since_epoch_begin_ms: IntGauge,
pub is_safe_mode: IntGauge,
pub checkpoint_builder_advance_epoch_is_safe_mode: IntGauge,
pub effective_buffer_stake: IntGauge,
pub epoch_random_beacon_dkg_failed: IntGauge,
pub epoch_random_beacon_dkg_num_shares: IntGauge,
pub epoch_random_beacon_dkg_epoch_start_completion_time_ms: IntGauge,
pub epoch_random_beacon_dkg_completion_time_ms: IntGauge,
pub epoch_random_beacon_dkg_message_time_ms: IntGauge,
pub epoch_random_beacon_dkg_confirmation_time_ms: IntGauge,
pub epoch_execution_time_observations_shared: IntCounter,
pub epoch_execution_time_observations_sharing_reason: IntCounterVec,
pub epoch_execution_time_measurements_dropped: IntCounter,
pub epoch_execution_time_observations_dropped: IntCounterVec,
pub epoch_execution_time_observer_indebted_objects: IntGauge,
pub epoch_execution_time_observer_utilization_cache_size: IntGauge,
pub epoch_execution_time_observer_overutilized_objects: IntGauge,
pub epoch_execution_time_observer_object_utilization: CounterVec,
pub epoch_execution_time_observations_loaded: IntGauge,
pub consensus_quarantine_queue_size: IntGauge,
pub shared_object_assignments_size: IntGauge,
}Fields§
§current_epoch: IntGaugeThe current epoch ID. This is updated only when the AuthorityState finishes reconfiguration.
current_voting_right: IntGaugeCurrent voting right of the validator in the protocol. Updated at the start of epochs.
epoch_total_duration: IntGaugeTotal duration of the epoch. This is measured from when the current epoch store is opened, until the current epoch store is replaced with the next epoch store.
epoch_checkpoint_count: IntGaugeNumber of checkpoints in the epoch.
epoch_transaction_count: IntGaugeNumber of transactions in the epoch.
epoch_total_gas_reward: IntGaugeTotal amount of gas rewards (i.e. computation gas cost) in the epoch.
epoch_pending_certs_processed_time_since_epoch_close_ms: IntGaugeThe duration from when the epoch is closed (i.e. validator halted) to when all pending certificates are processed (i.e. ready to send EndOfPublish message). This is the duration of (1) through (2) above.
epoch_end_of_publish_quorum_time_since_epoch_close_ms: IntGaugeThe interval from when the epoch is closed to when we receive 2f+1 EndOfPublish messages. This is the duration of (1) through (3) above.
epoch_last_checkpoint_created_time_since_epoch_close_ms: IntGaugeThe interval from when the epoch is closed to when we created the last checkpoint of the epoch. This is the duration of (1) through (4) above.
epoch_reconfig_start_time_since_epoch_close_ms: IntGaugeThe interval from when the epoch is closed to when we finished executing the last transaction of the checkpoint (and hence triggering reconfiguration process). This is the duration of (1) through (5) above.
epoch_validator_halt_duration_ms: IntGaugeThe total duration when this validator is halted, and hence does not accept certs from users. This is the duration of (1) through (6) above, and is the most important latency metric reflecting reconfiguration delay for each validator.
epoch_first_checkpoint_created_time_since_epoch_begin_ms: IntGaugeThe interval from when the epoch begins (i.e. right after state reconfigure, when the new epoch_store is created), to when the first checkpoint of the epoch is ready for creation locally. This is (7) above, and is a good proxy to how long it takes for the validator to become useful in the network after reconfiguration.
is_safe_mode: IntGaugeWhether we are running in safe mode where reward distribution and tokenomics are disabled.
checkpoint_builder_advance_epoch_is_safe_mode: IntGaugeWhen building the last checkpoint of the epoch, we execute advance epoch transaction once without committing results to the store. It’s useful to know whether this execution leads to safe_mode, since in theory the result could be different from checkpoint executor.
effective_buffer_stake: IntGaugeBuffer stake current in effect for this epoch
epoch_random_beacon_dkg_failed: IntGaugeSet to 1 if the random beacon DKG protocol failed for the most recent epoch.
The number of shares held by this node after the random beacon DKG protocol completed.
epoch_random_beacon_dkg_epoch_start_completion_time_ms: IntGaugeThe amount of time taken from epoch start to completion of random beacon DKG protocol, for the most recent epoch.
epoch_random_beacon_dkg_completion_time_ms: IntGaugeThe amount of time taken to complete random beacon DKG protocol from the time it was started (which may be a bit after the epcoh began), for the most recent epoch.
epoch_random_beacon_dkg_message_time_ms: IntGaugeThe amount of time taken to start first phase of the random beacon DKG protocol, at which point the node has submitted a DKG Message, for the most recent epoch.
epoch_random_beacon_dkg_confirmation_time_ms: IntGaugeThe amount of time taken to complete first phase of the random beacon DKG protocol, at which point the node has submitted a DKG Confirmation, for the most recent epoch.
The number of execution time observations messages shared by this node.
epoch_execution_time_observations_sharing_reason: IntCounterVecThe number of execution time observations messages intended to be shared by this node, annotated with reason.
epoch_execution_time_measurements_dropped: IntCounterThe number of execution time measurements dropped due to backpressure from the observer.
epoch_execution_time_observations_dropped: IntCounterVecThe number of execution time consensus messages dropped.
epoch_execution_time_observer_indebted_objects: IntGaugeThe number of cached indebted objects in the execution time observer.
epoch_execution_time_observer_utilization_cache_size: IntGaugeThe number of objects tracked by the object utilization cache.
epoch_execution_time_observer_overutilized_objects: IntGaugeThe number of objects determined by the execution time observer to be overutilized. Note: this may overcount if objects are evicted from the cache before being computed as not-overutilized.
epoch_execution_time_observer_object_utilization: CounterVecPer-object utilization for objects that were overutilized at least once at some point in their lifetime. Note: This metric is disabled by default as it may have very large cardinality.
epoch_execution_time_observations_loaded: IntGaugeThe number of execution time observations loaded at start of epoch.
consensus_quarantine_queue_size: IntGaugeThe number of consensus output items in the quarantine.
The number of shared object assignments in the quarantine.
Implementations§
Auto Trait Implementations§
impl Freeze for EpochMetrics
impl !RefUnwindSafe for EpochMetrics
impl Send for EpochMetrics
impl Sync for EpochMetrics
impl Unpin for EpochMetrics
impl !UnwindSafe for EpochMetrics
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.