sui_kvstore/bigtable/
metrics.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use std::sync::Arc;
5
6use prometheus::HistogramVec;
7use prometheus::IntCounterVec;
8use prometheus::Registry;
9use prometheus::register_histogram_vec_with_registry;
10use prometheus::register_int_counter_vec_with_registry;
11
12pub(crate) struct KvMetrics {
13    pub kv_get_success: IntCounterVec,
14    pub kv_get_not_found: IntCounterVec,
15    pub kv_get_errors: IntCounterVec,
16    pub kv_get_latency_ms: HistogramVec,
17    pub kv_get_batch_size: HistogramVec,
18    pub kv_get_latency_ms_per_key: HistogramVec,
19    pub kv_scan_success: IntCounterVec,
20    pub kv_scan_not_found: IntCounterVec,
21    pub kv_scan_error: IntCounterVec,
22    pub kv_scan_latency_ms: HistogramVec,
23    pub kv_bt_chunk_latency_ms: HistogramVec,
24    pub kv_bt_chunk_rows_returned_count: IntCounterVec,
25    pub kv_bt_chunk_rows_seen_count: IntCounterVec,
26}
27
28impl KvMetrics {
29    pub(crate) fn new(registry: &Registry) -> Arc<Self> {
30        Arc::new(Self {
31            kv_get_success: register_int_counter_vec_with_registry!(
32                "kv_get_success",
33                "Number of successful fetches from kv store",
34                &["client", "table"],
35                registry,
36            )
37            .unwrap(),
38            kv_get_not_found: register_int_counter_vec_with_registry!(
39                "kv_get_not_found",
40                "Number of fetches from kv store that returned not found",
41                &["client", "table"],
42                registry,
43            )
44            .unwrap(),
45            kv_get_errors: register_int_counter_vec_with_registry!(
46                "kv_get_errors",
47                "Number of fetches from kv store that returned an error",
48                &["client", "table"],
49                registry,
50            )
51            .unwrap(),
52            kv_get_latency_ms: register_histogram_vec_with_registry!(
53                "kv_get_latency_ms",
54                "Latency of fetches from kv store",
55                &["client", "table"],
56                prometheus::exponential_buckets(1.0, 1.6, 24)
57                    .unwrap()
58                    .to_vec(),
59                registry,
60            )
61            .unwrap(),
62            kv_get_batch_size: register_histogram_vec_with_registry!(
63                "kv_get_batch_size",
64                "Number of keys fetched per batch from kv store",
65                &["client", "table"],
66                prometheus::exponential_buckets(1.0, 1.6, 20)
67                    .unwrap()
68                    .to_vec(),
69                registry,
70            )
71            .unwrap(),
72            kv_get_latency_ms_per_key: register_histogram_vec_with_registry!(
73                "kv_get_latency_ms_per_key",
74                "Latency of fetches from kv store per key",
75                &["client", "table"],
76                prometheus::exponential_buckets(1.0, 1.6, 24)
77                    .unwrap()
78                    .to_vec(),
79                registry,
80            )
81            .unwrap(),
82            kv_scan_success: register_int_counter_vec_with_registry!(
83                "kv_scan_success",
84                "Number of successful scans from kv store",
85                &["client", "table"],
86                registry,
87            )
88            .unwrap(),
89            kv_scan_not_found: register_int_counter_vec_with_registry!(
90                "kv_scan_not_found",
91                "Number of fetches from kv store that returned not found",
92                &["client", "table"],
93                registry,
94            )
95            .unwrap(),
96            kv_scan_error: register_int_counter_vec_with_registry!(
97                "kv_scan_error",
98                "Number of scans from kv store that returned an error",
99                &["client", "table"],
100                registry,
101            )
102            .unwrap(),
103            kv_scan_latency_ms: register_histogram_vec_with_registry!(
104                "kv_scan_latency_ms",
105                "Latency of scans from kv store",
106                &["client", "table"],
107                prometheus::exponential_buckets(1.0, 1.6, 24)
108                    .unwrap()
109                    .to_vec(),
110                registry,
111            )
112            .unwrap(),
113            kv_bt_chunk_latency_ms: register_histogram_vec_with_registry!(
114                "kv_bt_chunk_latency_ms",
115                "Reported BigTable latency for a single chunk",
116                &["client", "table"],
117                prometheus::exponential_buckets(1.0, 1.6, 24)
118                    .unwrap()
119                    .to_vec(),
120                registry,
121            )
122            .unwrap(),
123            kv_bt_chunk_rows_returned_count: register_int_counter_vec_with_registry!(
124                "kv_bt_chunk_rows_returned_count",
125                "Reported BigTable rows returned count for a single chunk",
126                &["client", "table"],
127                registry,
128            )
129            .unwrap(),
130            kv_bt_chunk_rows_seen_count: register_int_counter_vec_with_registry!(
131                "kv_bt_chunk_rows_seen_count",
132                "Reported BigTable rows seen count for a single chunk",
133                &["client", "table"],
134                registry,
135            )
136            .unwrap(),
137        })
138    }
139}