#[derive(Debug, Clone)]
pub struct Metrics;
impl Metrics {
pub const BLOCK_LABELS: &str = "kona_node_block_labels";
pub const UNSAFE_BLOCK_LABEL: &str = "unsafe";
pub const CROSS_UNSAFE_BLOCK_LABEL: &str = "cross-unsafe";
pub const LOCAL_SAFE_BLOCK_LABEL: &str = "local-safe";
pub const SAFE_BLOCK_LABEL: &str = "safe";
pub const FINALIZED_BLOCK_LABEL: &str = "finalized";
pub const ENGINE_TASK_SUCCESS: &str = "kona_node_engine_task_count";
pub const ENGINE_TASK_FAILURE: &str = "kona_node_engine_task_failure";
pub const INSERT_TASK_LABEL: &str = "insert";
pub const CONSOLIDATE_TASK_LABEL: &str = "consolidate";
pub const FORKCHOICE_TASK_LABEL: &str = "forkchoice-update";
pub const BUILD_TASK_LABEL: &str = "build";
pub const FINALIZE_TASK_LABEL: &str = "finalize";
pub const ENGINE_METHOD_REQUEST_DURATION: &str = "kona_node_engine_method_request_duration";
pub const FORKCHOICE_UPDATE_METHOD: &str = "engine_forkchoiceUpdated";
pub const NEW_PAYLOAD_METHOD: &str = "engine_newPayload";
pub const GET_PAYLOAD_METHOD: &str = "engine_getPayload";
pub const ENGINE_RESET_COUNT: &str = "kona_node_engine_reset_count";
#[cfg(feature = "metrics")]
pub fn init() {
Self::describe();
Self::zero();
}
#[cfg(feature = "metrics")]
pub fn describe() {
metrics::describe_gauge!(Self::BLOCK_LABELS, "Blockchain head labels");
metrics::describe_counter!(Self::ENGINE_TASK_SUCCESS, "Engine tasks successfully executed");
metrics::describe_counter!(Self::ENGINE_TASK_FAILURE, "Engine tasks failed");
metrics::describe_histogram!(
Self::ENGINE_METHOD_REQUEST_DURATION,
metrics::Unit::Seconds,
"Engine method request duration"
);
metrics::describe_counter!(
Self::ENGINE_RESET_COUNT,
metrics::Unit::Count,
"Engine reset count"
);
}
#[cfg(feature = "metrics")]
pub fn zero() {
kona_macros::set!(counter, Self::ENGINE_TASK_SUCCESS, Self::INSERT_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_SUCCESS, Self::CONSOLIDATE_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_SUCCESS, Self::BUILD_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_SUCCESS, Self::FINALIZE_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_FAILURE, Self::INSERT_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_FAILURE, Self::CONSOLIDATE_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_FAILURE, Self::BUILD_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_TASK_FAILURE, Self::FINALIZE_TASK_LABEL, 0);
kona_macros::set!(counter, Self::ENGINE_RESET_COUNT, 0);
}
}