pub struct EpochMetrics {Show 30 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_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 consensus_quarantine_queue_size: IntGauge,
pub shared_object_assignments_size: IntGauge,
}
Fields§
§current_epoch: IntGauge
The current epoch ID. This is updated only when the AuthorityState finishes reconfiguration.
current_voting_right: IntGauge
Current voting right of the validator in the protocol. Updated at the start of epochs.
epoch_total_duration: IntGauge
Total 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: IntGauge
Number of checkpoints in the epoch.
epoch_transaction_count: IntGauge
Number of transactions in the epoch.
epoch_total_gas_reward: IntGauge
Total amount of gas rewards (i.e. computation gas cost) in the epoch.
epoch_pending_certs_processed_time_since_epoch_close_ms: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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: IntGauge
Whether we are running in safe mode where reward distribution and tokenomics are disabled.
checkpoint_builder_advance_epoch_is_safe_mode: IntGauge
When 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: IntGauge
Buffer stake current in effect for this epoch
epoch_random_beacon_dkg_failed: IntGauge
Set 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: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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: IntGauge
The 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_measurements_dropped: IntCounter
The number of execution time measurements dropped due to backpressure from the observer.
epoch_execution_time_observations_dropped: IntCounterVec
The number of execution time consensus messages dropped.
epoch_execution_time_observer_indebted_objects: IntGauge
The number of cached indebted objects in the execution time observer.
epoch_execution_time_observer_utilization_cache_size: IntGauge
The number of objects tracked by the object utilization cache.
epoch_execution_time_observer_overutilized_objects: IntGauge
The 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: CounterVec
Per-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.
consensus_quarantine_queue_size: IntGauge
The 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::Request
Source§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
Source§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.