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
101 pub static ref METRIC_OBJECT_STORE_WAL_MISSING_HISTORY_ACCEPTED_TOTAL: IntCounter = register_int_counter!(
106 "greptime_logstore_object_store_wal_missing_history_accepted_total",
107 "object store logstore regions opened without their WAL history total",
108 )
109 .unwrap();
110
111 pub static ref METRIC_OBJECT_STORE_WAL_DELETED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
114 "greptime_logstore_object_store_wal_deleted_objects_total",
115 "object store logstore deleted objects total",
116 )
117 .unwrap();
118 pub static ref METRIC_OBJECT_STORE_WAL_FAILED_DELETES_TOTAL: IntCounter = register_int_counter!(
121 "greptime_logstore_object_store_wal_failed_deletes_total",
122 "object store logstore failed object deletes total",
123 )
124 .unwrap();
125 pub static ref METRIC_OBJECT_STORE_WAL_RELEASE_RECORDS_TOTAL: IntCounter = register_int_counter!(
128 "greptime_logstore_object_store_wal_release_records_total",
129 "object store logstore release records made durable total",
130 )
131 .unwrap();
132
133 pub static ref METRIC_OBJECT_STORE_WAL_SEAL_TO_DURABLE_SECONDS: Histogram = register_histogram!(
142 "greptime_logstore_object_store_wal_seal_to_durable_seconds",
143 "object store logstore seconds from sealing a batch to the success of its conditional create, slot waits and retries included",
144 exponential_buckets(0.001, 2.0, 14).unwrap(),
145 )
146 .unwrap();
147
148 pub static ref METRIC_OBJECT_STORE_WAL_APPEND_ACK_SECONDS: Histogram = register_histogram!(
156 "greptime_logstore_object_store_wal_append_ack_seconds",
157 "object store logstore seconds an append waits for its acknowledgement in the durable mode",
158 exponential_buckets(0.002, 2.0, 14).unwrap(),
159 )
160 .unwrap();
161
162 pub static ref METRIC_OBJECT_STORE_WAL_OBJECT_BYTES: Histogram = register_histogram!(
169 "greptime_logstore_object_store_wal_object_bytes",
170 "object store logstore bytes of each object sealed",
171 exponential_buckets(1024.0, 2.0, 15).unwrap(),
172 )
173 .unwrap();
174
175 pub static ref METRIC_OBJECT_STORE_WAL_OBJECT_ENTRIES: Histogram = register_histogram!(
182 "greptime_logstore_object_store_wal_object_entries",
183 "object store logstore entries of each object sealed",
184 exponential_buckets(1.0, 4.0, 11).unwrap(),
185 )
186 .unwrap();
187
188 pub static ref METRIC_OBJECT_STORE_WAL_CREATED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
193 "greptime_logstore_object_store_wal_created_objects_total",
194 "object store logstore conditional creates that succeeded, identical retries included",
195 )
196 .unwrap();
197
198 pub static ref METRIC_OBJECT_STORE_WAL_INDEXED_OBJECTS: IntGauge = register_int_gauge!(
201 "greptime_logstore_object_store_wal_indexed_objects",
202 "object store logstore objects currently indexed",
203 )
204 .unwrap();
205
206 pub static ref METRIC_OBJECT_STORE_WAL_INDEXED_BYTES: IntGauge = register_int_gauge!(
209 "greptime_logstore_object_store_wal_indexed_bytes",
210 "object store logstore bytes currently indexed",
211 )
212 .unwrap();
213
214 pub static ref METRIC_OBJECT_STORE_WAL_RECOVERY_SECONDS: Histogram = register_histogram!(
221 "greptime_logstore_object_store_wal_recovery_seconds",
222 "object store logstore seconds spent by a recovery that succeeded",
223 exponential_buckets(0.01, 3.0, 10).unwrap(),
224 )
225 .unwrap();
226
227 pub static ref METRIC_OBJECT_STORE_WAL_RECOVERED_OBJECTS_TOTAL: IntCounter = register_int_counter!(
232 "greptime_logstore_object_store_wal_recovered_objects_total",
233 "object store logstore objects read by a recovery that succeeded total",
234 )
235 .unwrap();
236
237 pub static ref METRIC_OBJECT_STORE_WAL_READ_SECONDS: Histogram = register_histogram!(
244 "greptime_logstore_object_store_wal_read_seconds",
245 "object store logstore seconds spent serving a region read that ran to its end",
246 exponential_buckets(0.005, 3.0, 10).unwrap(),
247 )
248 .unwrap();
249
250 pub static ref METRIC_OBJECT_STORE_WAL_CREATE_CONFLICTS_TOTAL: IntCounter = register_int_counter!(
255 "greptime_logstore_object_store_wal_create_conflicts_total",
256 "object store logstore conflicting conditional creates total",
257 )
258 .unwrap();
259
260 pub static ref METRIC_OBJECT_STORE_WAL_CREATE_FAILURES_TOTAL: IntCounter = register_int_counter!(
264 "greptime_logstore_object_store_wal_create_failures_total",
265 "object store logstore conditional creates the object store did not confirm total",
266 )
267 .unwrap();
268
269 pub static ref METRIC_OBJECT_STORE_WAL_POISONED_TOTAL: IntCounter = register_int_counter!(
272 "greptime_logstore_object_store_wal_poisoned_total",
273 "object store logstores poisoned total",
274 )
275 .unwrap();
276
277 pub static ref METRIC_OBJECT_STORE_WAL_STALLED_APPENDS_TOTAL: IntCounter = register_int_counter!(
283 "greptime_logstore_object_store_wal_stalled_appends_total",
284 "object store logstore appends stalled by full sealed batches or the backlog thresholds total",
285 )
286 .unwrap();
287
288 pub static ref METRIC_OBJECT_STORE_WAL_STALLED_APPEND_SECONDS: Histogram = register_histogram!(
296 "greptime_logstore_object_store_wal_stalled_append_seconds",
297 "object store logstore seconds a stalled append is held back before it is admitted or refused",
298 exponential_buckets(0.005, 3.0, 9).unwrap(),
299 )
300 .unwrap();
301
302 pub static ref METRIC_OBJECT_STORE_WAL_FAILING: IntGauge = register_int_gauge!(
308 "greptime_logstore_object_store_wal_failing",
309 "object store logstores rejecting appends because the object store refuses their backlog with an error that requires intervention",
310 )
311 .unwrap();
312
313 pub static ref METRIC_OBJECT_STORE_WAL_REJECTED_APPENDS_TOTAL: IntCounter = register_int_counter!(
318 "greptime_logstore_object_store_wal_rejected_appends_total",
319 "object store logstore appends rejected while the object store refuses the backlog total",
320 )
321 .unwrap();
322}