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