reth_engine_tree/tree/
metrics.rs1use reth_blockchain_tree::metrics::TreeMetrics;
2use reth_evm::metrics::ExecutorMetrics;
3use reth_metrics::{
4 metrics::{Counter, Gauge, Histogram},
5 Metrics,
6};
7use reth_trie::updates::TrieUpdates;
8
9#[derive(Debug, Default)]
11pub(crate) struct EngineApiMetrics {
12 pub(crate) engine: EngineMetrics,
14 pub(crate) executor: ExecutorMetrics,
16 pub(crate) block_validation: BlockValidationMetrics,
18 pub(crate) tree: TreeMetrics,
20}
21
22#[derive(Metrics)]
24#[metrics(scope = "consensus.engine.beacon")]
25pub(crate) struct EngineMetrics {
26 pub(crate) executed_blocks: Gauge,
28 pub(crate) inserted_already_executed_blocks: Counter,
30 pub(crate) pipeline_runs: Counter,
32 pub(crate) forkchoice_updated_messages: Counter,
34 pub(crate) new_payload_messages: Counter,
36 pub(crate) persistence_duration: Histogram,
38 pub(crate) failed_new_payload_response_deliveries: Counter,
44 pub(crate) failed_forkchoice_updated_response_deliveries: Counter,
46 }
48
49#[derive(Metrics)]
51#[metrics(scope = "sync.block_validation")]
52pub(crate) struct BlockValidationMetrics {
53 pub(crate) state_root_storage_tries_updated_total: Counter,
55 pub(crate) state_root_histogram: Histogram,
57 pub(crate) state_root_duration: Gauge,
59}
60
61impl BlockValidationMetrics {
62 pub(crate) fn record_state_root(&self, trie_output: &TrieUpdates, elapsed_as_secs: f64) {
64 self.state_root_storage_tries_updated_total
65 .increment(trie_output.storage_tries_ref().len() as u64);
66 self.state_root_duration.set(elapsed_as_secs);
67 self.state_root_histogram.record(elapsed_as_secs);
68 }
69}