reth_rpc_engine_api/
metrics.rs

1use metrics::{Counter, Histogram};
2use reth_metrics::Metrics;
3
4/// All beacon consensus engine metrics
5#[derive(Default)]
6pub(crate) struct EngineApiMetrics {
7    /// Engine API latency metrics
8    pub(crate) latency: EngineApiLatencyMetrics,
9    /// Blob-related metrics
10    pub(crate) blob_metrics: BlobMetrics,
11}
12
13/// Beacon consensus engine latency metrics.
14#[derive(Metrics)]
15#[metrics(scope = "engine.rpc")]
16pub(crate) struct EngineApiLatencyMetrics {
17    /// Latency for `engine_newPayloadV1`
18    pub(crate) new_payload_v1: Histogram,
19    /// Latency for `engine_newPayloadV2`
20    pub(crate) new_payload_v2: Histogram,
21    /// Latency for `engine_newPayloadV3`
22    pub(crate) new_payload_v3: Histogram,
23    /// Latency for `engine_newPayloadV4`
24    pub(crate) new_payload_v4: Histogram,
25    /// Latency for `engine_forkchoiceUpdatedV1`
26    pub(crate) fork_choice_updated_v1: Histogram,
27    /// Latency for `engine_forkchoiceUpdatedV2`
28    pub(crate) fork_choice_updated_v2: Histogram,
29    /// Latency for `engine_forkchoiceUpdatedV3`
30    pub(crate) fork_choice_updated_v3: Histogram,
31    /// Latency for `engine_getPayloadV1`
32    pub(crate) get_payload_v1: Histogram,
33    /// Latency for `engine_getPayloadV2`
34    pub(crate) get_payload_v2: Histogram,
35    /// Latency for `engine_getPayloadV3`
36    pub(crate) get_payload_v3: Histogram,
37    /// Latency for `engine_getPayloadV4`
38    pub(crate) get_payload_v4: Histogram,
39    /// Latency for `engine_getPayloadV5`
40    pub(crate) get_payload_v5: Histogram,
41    /// Latency for `engine_getPayloadBodiesByRangeV1`
42    pub(crate) get_payload_bodies_by_range_v1: Histogram,
43    /// Latency for `engine_getPayloadBodiesByHashV1`
44    pub(crate) get_payload_bodies_by_hash_v1: Histogram,
45    /// Latency for `engine_getBlobsV1`
46    pub(crate) get_blobs_v1: Histogram,
47    /// Latency for `engine_getBlobsV2`
48    pub(crate) get_blobs_v2: Histogram,
49}
50
51#[derive(Metrics)]
52#[metrics(scope = "engine.rpc.blobs")]
53pub(crate) struct BlobMetrics {
54    /// Count of blobs successfully retrieved
55    pub(crate) blob_count: Counter,
56    /// Count of blob misses
57    pub(crate) blob_misses: Counter,
58    /// Number of blobs requested via getBlobsV2
59    pub(crate) get_blobs_requests_blobs_total: Counter,
60    /// Number of blobs requested via getBlobsV2 that are present in the blobpool
61    pub(crate) get_blobs_requests_blobs_in_blobpool_total: Counter,
62    /// Number of times getBlobsV2 responded with “hit”
63    pub(crate) get_blobs_requests_success_total: Counter,
64    /// Number of times getBlobsV2 responded with “miss”
65    pub(crate) get_blobs_requests_failure_total: Counter,
66}