sui_kvstore/bigtable/
metrics.rs

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