sui_deepbook_indexer/
metrics.rs1use prometheus::{
5 IntCounter, IntCounterVec, IntGaugeVec, Registry, register_int_counter_vec_with_registry,
6 register_int_counter_with_registry, register_int_gauge_vec_with_registry,
7};
8use sui_indexer_builder::metrics::IndexerMetricProvider;
9
10#[derive(Clone, Debug)]
11pub struct DeepBookIndexerMetrics {
12 pub(crate) total_deepbook_transactions: IntCounter,
13 pub(crate) backfill_tasks_remaining_checkpoints: IntGaugeVec,
14 pub(crate) tasks_processed_checkpoints: IntCounterVec,
15 pub(crate) inflight_live_tasks: IntGaugeVec,
16 pub(crate) tasks_latest_retrieved_checkpoints: IntGaugeVec,
17}
18
19impl DeepBookIndexerMetrics {
20 pub fn new(registry: &Registry) -> Self {
21 Self {
22 total_deepbook_transactions: register_int_counter_with_registry!(
23 "deepbook_indexer_total_deepbook_transactions",
24 "Total number of deepbook transactions",
25 registry,
26 )
27 .unwrap(),
28 backfill_tasks_remaining_checkpoints: register_int_gauge_vec_with_registry!(
29 "deepbook_indexer_backfill_tasks_remaining_checkpoints",
30 "The remaining checkpoints for the currently running backfill task",
31 &["task_name"],
32 registry,
33 )
34 .unwrap(),
35 tasks_processed_checkpoints: register_int_counter_vec_with_registry!(
36 "deepbook_indexer_tasks_processed_checkpoints",
37 "Total processed checkpoints for each task",
38 &["task_name", "task_type"],
39 registry,
40 )
41 .unwrap(),
42 inflight_live_tasks: register_int_gauge_vec_with_registry!(
43 "deepbook_indexer_inflight_live_tasks",
44 "Number of inflight live tasks",
45 &["task_name"],
46 registry,
47 )
48 .unwrap(),
49 tasks_latest_retrieved_checkpoints: register_int_gauge_vec_with_registry!(
50 "deepbook_indexer_tasks_latest_retrieved_checkpoints",
51 "latest retrieved checkpoint for each task",
52 &["task_name", "task_type"],
53 registry,
54 )
55 .unwrap(),
56 }
57 }
58
59 pub fn new_for_testing() -> Self {
60 let registry = Registry::new();
61 Self::new(®istry)
62 }
63}
64
65impl IndexerMetricProvider for DeepBookIndexerMetrics {
66 fn get_tasks_latest_retrieved_checkpoints(&self) -> &IntGaugeVec {
67 &self.tasks_latest_retrieved_checkpoints
68 }
69
70 fn get_tasks_remaining_checkpoints_metric(&self) -> &IntGaugeVec {
71 &self.backfill_tasks_remaining_checkpoints
72 }
73
74 fn get_tasks_processed_checkpoints_metric(&self) -> &IntCounterVec {
75 &self.tasks_processed_checkpoints
76 }
77
78 fn get_inflight_live_tasks_metrics(&self) -> &IntGaugeVec {
79 &self.inflight_live_tasks
80 }
81}