sui_deepbook_indexer/
metrics.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use 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(&registry)
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}