1use lazy_static::lazy_static;
16use prometheus::*;
17
18pub const LOGSTORE_LABEL: &str = "logstore";
20pub const OPTYPE_LABEL: &str = "optype";
22pub const TOPIC_LABEL: &str = "topic";
24pub const PARTITION_LABEL: &str = "partition";
26
27lazy_static! {
28 pub static ref METRIC_LOGSTORE_OP_BYTES_TOTAL: IntCounterVec = register_int_counter_vec!(
30 "greptime_logstore_op_bytes_total",
31 "logstore operation bytes total",
32 &[LOGSTORE_LABEL, OPTYPE_LABEL],
33 )
34 .unwrap();
35 pub static ref METRIC_KAFKA_APPEND_BATCH_BYTES_TOTAL: IntCounter = METRIC_LOGSTORE_OP_BYTES_TOTAL.with_label_values(
37 &["kafka", "append_batch"],
38 );
39 pub static ref METRIC_KAFKA_READ_BYTES_TOTAL: IntCounter = METRIC_LOGSTORE_OP_BYTES_TOTAL.with_label_values(
41 &["kafka", "read"],
42 );
43 pub static ref METRIC_RAFT_ENGINE_APPEND_BATCH_BYTES_TOTAL: IntCounter = METRIC_LOGSTORE_OP_BYTES_TOTAL.with_label_values(
45 &["raft-engine", "append_batch"],
46 );
47 pub static ref METRIC_RAFT_ENGINE_READ_BYTES_TOTAL: IntCounter = METRIC_LOGSTORE_OP_BYTES_TOTAL.with_label_values(
49 &["raft-engine", "read"],
50 );
51
52 pub static ref METRIC_LOGSTORE_OP_ELAPSED: HistogramVec = register_histogram_vec!(
54 "greptime_logstore_op_elapsed",
55 "logstore operation elapsed",
56 &[LOGSTORE_LABEL, OPTYPE_LABEL],
57 vec![
58 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0, 15.0, 20.0, 30.0,
59 45.0, 60.0,
60 ],
61 )
62 .unwrap();
63 pub static ref METRIC_KAFKA_APPEND_BATCH_ELAPSED: Histogram = METRIC_LOGSTORE_OP_ELAPSED.with_label_values(&["kafka", "append_batch"]);
65 pub static ref METRIC_KAFKA_READ_ELAPSED: Histogram = METRIC_LOGSTORE_OP_ELAPSED.with_label_values(&["kafka", "read"]);
68 pub static ref METRIC_RAFT_ENGINE_APPEND_BATCH_ELAPSED: Histogram = METRIC_LOGSTORE_OP_ELAPSED.with_label_values(&["raft-engine", "append_batch"]);
70 pub static ref METRIC_RAFT_ENGINE_READ_ELAPSED: Histogram = METRIC_LOGSTORE_OP_ELAPSED.with_label_values(&["raft-engine", "read"]);
73
74 pub static ref METRIC_KAFKA_CLIENT_BYTES_TOTAL: IntCounterVec = register_int_counter_vec!(
75 "greptime_logstore_kafka_client_bytes_total",
76 "kafka logstore's bytes traffic total",
77 &[LOGSTORE_LABEL, PARTITION_LABEL],
78 )
79 .unwrap();
80 pub static ref METRIC_KAFKA_CLIENT_TRAFFIC_TOTAL: IntCounterVec = register_int_counter_vec!(
81 "greptime_logstore_kafka_client_traffic_total",
82 "kafka logstore's request count traffic total",
83 &[LOGSTORE_LABEL, PARTITION_LABEL],
84 )
85 .unwrap();
86 pub static ref METRIC_KAFKA_CLIENT_PRODUCE_ELAPSED: HistogramVec = register_histogram_vec!(
87 "greptime_logstore_kafka_client_produce_elapsed",
88 "kafka logstore produce operation elapsed",
89 &[LOGSTORE_LABEL, PARTITION_LABEL],
90 )
91 .unwrap();
92
93 pub static ref METRIC_OBJECT_STORE_WAL_SKIPPED_SEGMENTS_TOTAL: IntCounter = register_int_counter!(
96 "greptime_logstore_object_store_wal_skipped_segments_total",
97 "object store logstore skipped corrupted segments total",
98 )
99 .unwrap();
100 pub static ref METRIC_OBJECT_STORE_WAL_DELETED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
103 "greptime_logstore_object_store_wal_deleted_objects_total",
104 "object store logstore deleted objects total",
105 )
106 .unwrap();
107 pub static ref METRIC_OBJECT_STORE_WAL_FAILED_DELETES_TOTAL: IntCounter = register_int_counter!(
110 "greptime_logstore_object_store_wal_failed_deletes_total",
111 "object store logstore failed object deletes total",
112 )
113 .unwrap();
114
115 pub static ref METRIC_OBJECT_STORE_WAL_SEAL_TO_DURABLE_SECONDS: Histogram = register_histogram!(
124 "greptime_logstore_object_store_wal_seal_to_durable_seconds",
125 "object store logstore seconds from sealing a batch to the success of its conditional create, slot waits and retries included",
126 exponential_buckets(0.001, 2.0, 14).unwrap(),
127 )
128 .unwrap();
129
130 pub static ref METRIC_OBJECT_STORE_WAL_APPEND_ACK_SECONDS: Histogram = register_histogram!(
138 "greptime_logstore_object_store_wal_append_ack_seconds",
139 "object store logstore seconds an append waits for its acknowledgement in the durable mode",
140 exponential_buckets(0.002, 2.0, 14).unwrap(),
141 )
142 .unwrap();
143
144 pub static ref METRIC_OBJECT_STORE_WAL_OBJECT_BYTES: Histogram = register_histogram!(
151 "greptime_logstore_object_store_wal_object_bytes",
152 "object store logstore bytes of each object sealed",
153 exponential_buckets(1024.0, 2.0, 15).unwrap(),
154 )
155 .unwrap();
156
157 pub static ref METRIC_OBJECT_STORE_WAL_OBJECT_ENTRIES: Histogram = register_histogram!(
164 "greptime_logstore_object_store_wal_object_entries",
165 "object store logstore entries of each object sealed",
166 exponential_buckets(1.0, 4.0, 11).unwrap(),
167 )
168 .unwrap();
169
170 pub static ref METRIC_OBJECT_STORE_WAL_CREATED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
175 "greptime_logstore_object_store_wal_created_objects_total",
176 "object store logstore conditional creates that succeeded, identical retries included",
177 )
178 .unwrap();
179
180 pub static ref METRIC_OBJECT_STORE_WAL_INDEXED_OBJECTS: IntGauge = register_int_gauge!(
183 "greptime_logstore_object_store_wal_indexed_objects",
184 "object store logstore objects currently indexed",
185 )
186 .unwrap();
187
188 pub static ref METRIC_OBJECT_STORE_WAL_INDEXED_BYTES: IntGauge = register_int_gauge!(
191 "greptime_logstore_object_store_wal_indexed_bytes",
192 "object store logstore bytes currently indexed",
193 )
194 .unwrap();
195
196 pub static ref METRIC_OBJECT_STORE_WAL_RECOVERY_SECONDS: Histogram = register_histogram!(
203 "greptime_logstore_object_store_wal_recovery_seconds",
204 "object store logstore seconds spent by a recovery that succeeded",
205 exponential_buckets(0.01, 3.0, 10).unwrap(),
206 )
207 .unwrap();
208
209 pub static ref METRIC_OBJECT_STORE_WAL_RECOVERED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
214 "greptime_logstore_object_store_wal_recovered_objects_total",
215 "object store logstore objects read by a recovery that succeeded total",
216 )
217 .unwrap();
218
219 pub static ref METRIC_OBJECT_STORE_WAL_READ_SECONDS: Histogram = register_histogram!(
226 "greptime_logstore_object_store_wal_read_seconds",
227 "object store logstore seconds spent serving a region read that ran to its end",
228 exponential_buckets(0.005, 3.0, 10).unwrap(),
229 )
230 .unwrap();
231
232 pub static ref METRIC_OBJECT_STORE_WAL_CREATE_CONFLICTS_TOTAL: IntCounter = register_int_counter!(
237 "greptime_logstore_object_store_wal_create_conflicts_total",
238 "object store logstore conflicting conditional creates total",
239 )
240 .unwrap();
241
242 pub static ref METRIC_OBJECT_STORE_WAL_CREATE_FAILURES_TOTAL: IntCounter = register_int_counter!(
246 "greptime_logstore_object_store_wal_create_failures_total",
247 "object store logstore transient conditional create failures total",
248 )
249 .unwrap();
250
251 pub static ref METRIC_OBJECT_STORE_WAL_POISONED_TOTAL: IntCounter = register_int_counter!(
254 "greptime_logstore_object_store_wal_poisoned_total",
255 "object store logstores poisoned total",
256 )
257 .unwrap();
258
259 pub static ref METRIC_OBJECT_STORE_WAL_STALLED_APPENDS_TOTAL: IntCounter = register_int_counter!(
263 "greptime_logstore_object_store_wal_stalled_appends_total",
264 "object store logstore appends stalled by the backlog thresholds total",
265 )
266 .unwrap();
267
268 pub static ref METRIC_OBJECT_STORE_WAL_STALLED_APPEND_SECONDS: Histogram = register_histogram!(
276 "greptime_logstore_object_store_wal_stalled_append_seconds",
277 "object store logstore seconds a stalled append is held back before it is admitted or refused",
278 exponential_buckets(0.005, 3.0, 9).unwrap(),
279 )
280 .unwrap();
281}