sui_analytics_indexer/
analytics_metrics.rs1#![allow(dead_code)]
4use prometheus::{
5 HistogramOpts, HistogramVec, IntCounterVec, IntGaugeVec, Registry,
6 register_histogram_vec_with_registry, register_int_counter_vec_with_registry,
7 register_int_gauge_vec_with_registry,
8};
9
10#[derive(Clone)]
11pub struct AnalyticsMetrics {
12 pub total_received: IntCounterVec,
13 pub last_uploaded_checkpoint: IntGaugeVec,
14 pub max_checkpoint_on_store: IntGaugeVec,
15 pub total_too_large_to_deserialize: IntCounterVec,
16 pub file_size_bytes: HistogramVec,
17}
18
19impl AnalyticsMetrics {
20 pub fn new(registry: &Registry) -> Self {
21 Self {
22 total_received: register_int_counter_vec_with_registry!(
23 "total_received",
24 "Number of checkpoints received",
25 &["data_type"],
26 registry
27 )
28 .unwrap(),
29 last_uploaded_checkpoint: register_int_gauge_vec_with_registry!(
30 "last_uploaded_checkpoint",
31 "Number of uploaded checkpoints.",
32 &["data_type"],
33 registry,
34 )
35 .unwrap(),
36 max_checkpoint_on_store: register_int_gauge_vec_with_registry!(
37 "max_checkpoint_on_store",
38 "Max checkpoint on the db table.",
39 &["data_type"],
40 registry,
41 )
42 .unwrap(),
43 total_too_large_to_deserialize: register_int_counter_vec_with_registry!(
44 "total_too_large_to_deserialize",
45 "Total number of rows skipped due to size.",
46 &["data_type"],
47 registry,
48 )
49 .unwrap(),
50 file_size_bytes: register_histogram_vec_with_registry!(
51 HistogramOpts::new("file_size_bytes", "Size of generated files in bytes.",)
52 .buckets(vec![
53 1_000.0, 10_000.0, 100_000.0, 1_000_000.0, 10_000_000.0, 50_000_000.0, 100_000_000.0, 250_000_000.0, 500_000_000.0, 1_000_000_000.0, 2_000_000_000.0, ]),
65 &["source"],
66 registry,
67 )
68 .unwrap(),
69 }
70 }
71}