iota_core/checkpoints/checkpoint_executor/
metrics.rs1use std::sync::Arc;
6
7use prometheus::{
8 Histogram, IntCounter, IntGauge, Registry, register_histogram_with_registry,
9 register_int_counter_with_registry, register_int_gauge_with_registry,
10};
11
12pub struct CheckpointExecutorMetrics {
13 pub checkpoint_exec_sync_tps: IntGauge,
14 pub last_executed_checkpoint: IntGauge,
15 pub last_executed_checkpoint_timestamp_ms: IntGauge,
16 pub checkpoint_exec_errors: IntCounter,
17 pub checkpoint_exec_epoch: IntGauge,
18 pub checkpoint_exec_inflight: IntGauge,
19 pub checkpoint_exec_latency: Histogram,
20 pub checkpoint_prepare_latency: Histogram,
21 pub checkpoint_transaction_count: Histogram,
22 pub checkpoint_contents_age: Histogram,
23 pub last_executed_checkpoint_age: Histogram,
24}
25
26impl CheckpointExecutorMetrics {
27 pub fn new(registry: &Registry) -> Arc<Self> {
28 let this = Self {
29 checkpoint_exec_sync_tps: register_int_gauge_with_registry!(
30 "checkpoint_exec_sync_tps",
31 "Checkpoint sync estimated transactions per second",
32 registry
33 )
34 .unwrap(),
35 last_executed_checkpoint: register_int_gauge_with_registry!(
36 "last_executed_checkpoint",
37 "Last executed checkpoint",
38 registry
39 )
40 .unwrap(),
41 last_executed_checkpoint_timestamp_ms: register_int_gauge_with_registry!(
42 "last_executed_checkpoint_timestamp_ms",
43 "Last executed checkpoint timestamp ms",
44 registry
45 )
46 .unwrap(),
47 checkpoint_exec_errors: register_int_counter_with_registry!(
48 "checkpoint_exec_errors",
49 "Checkpoint execution errors count",
50 registry
51 )
52 .unwrap(),
53 checkpoint_exec_epoch: register_int_gauge_with_registry!(
54 "checkpoint_exec_epoch",
55 "Current epoch number in the checkpoint executor",
56 registry
57 )
58 .unwrap(),
59 checkpoint_exec_inflight: register_int_gauge_with_registry!(
60 "checkpoint_exec_inflight",
61 "Current number of inflight checkpoints being executed",
62 registry
63 )
64 .unwrap(),
65 checkpoint_exec_latency: register_histogram_with_registry!(
66 "checkpoint_exec_latency",
67 "Latency of executing a checkpoint from enqueue to all effects available",
68 iota_metrics::SUBSECOND_LATENCY_SEC_BUCKETS.to_vec(),
69 registry,
70 )
71 .unwrap(),
72 checkpoint_prepare_latency: register_histogram_with_registry!(
73 "checkpoint_prepare_latency",
74 "Latency of preparing a checkpoint to enqueue for execution",
75 iota_metrics::SUBSECOND_LATENCY_SEC_BUCKETS.to_vec(),
76 registry,
77 )
78 .unwrap(),
79 checkpoint_transaction_count: register_histogram_with_registry!(
80 "checkpoint_transaction_count",
81 "Number of transactions in the checkpoint",
82 iota_metrics::COUNT_BUCKETS.to_vec(),
83 registry,
84 )
85 .unwrap(),
86 checkpoint_contents_age: register_histogram_with_registry!(
87 "checkpoint_contents_age",
88 "Age of checkpoints when they arrive for execution",
89 iota_metrics::LATENCY_SEC_BUCKETS.to_vec(),
90 registry,
91 )
92 .unwrap(),
93 last_executed_checkpoint_age: register_histogram_with_registry!(
94 "last_executed_checkpoint_age",
95 "Age of the last executed checkpoint",
96 iota_metrics::LATENCY_SEC_BUCKETS.to_vec(),
97 registry
98 )
99 .unwrap(),
100 };
101 Arc::new(this)
102 }
103
104 pub fn new_for_tests() -> Arc<Self> {
105 Self::new(&Registry::new())
106 }
107}