Skip to content

Commit 125c509

Browse files
committed
add histogram to more core s3 calls
and make their histograms appear only when the endpoint has been called
1 parent 70a248b commit 125c509

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

quickwit/quickwit-storage/src/metrics.rs

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,13 @@ pub struct StorageMetrics {
4444

4545
pub object_storage_delete_requests_total: IntCounter,
4646
pub object_storage_bulk_delete_requests_total: IntCounter,
47-
pub object_storage_delete_request_duration: Histogram,
48-
pub object_storage_bulk_delete_request_duration: Histogram,
47+
pub object_storage_delete_request_duration: Lazy<Histogram, Box<dyn Fn() -> Histogram + Send>>,
48+
pub object_storage_bulk_delete_request_duration:
49+
Lazy<Histogram, Box<dyn Fn() -> Histogram + Send>>,
50+
pub object_storage_get_request_duration: Lazy<Histogram, Box<dyn Fn() -> Histogram + Send>>,
51+
pub object_storage_put_request_duration: Lazy<Histogram, Box<dyn Fn() -> Histogram + Send>>,
52+
pub object_storage_put_part_request_duration:
53+
Lazy<Histogram, Box<dyn Fn() -> Histogram + Send>>,
4954
}
5055

5156
impl Default for StorageMetrics {
@@ -86,10 +91,26 @@ impl Default for StorageMetrics {
8691
["action"],
8792
vec![0.1, 0.5, 1.0, 5.0, 10.0, 30.0, 60.0],
8893
);
89-
let object_storage_delete_request_duration =
90-
object_storage_request_duration.with_label_values(["delete_object"]);
91-
let object_storage_bulk_delete_request_duration =
92-
object_storage_request_duration.with_label_values(["delete_objects"]);
94+
let object_storage_request_duration_clone = object_storage_request_duration.clone();
95+
let object_storage_delete_request_duration = Lazy::new(Box::new(move || {
96+
object_storage_request_duration_clone.with_label_values(["delete_object"])
97+
}) as _);
98+
let object_storage_request_duration_clone = object_storage_request_duration.clone();
99+
let object_storage_bulk_delete_request_duration = Lazy::new(Box::new(move || {
100+
object_storage_request_duration_clone.with_label_values(["delete_objects"])
101+
}) as _);
102+
let object_storage_request_duration_clone = object_storage_request_duration.clone();
103+
let object_storage_get_request_duration = Lazy::new(Box::new(move || {
104+
object_storage_request_duration_clone.with_label_values(["get"])
105+
}) as _);
106+
let object_storage_request_duration_clone = object_storage_request_duration.clone();
107+
let object_storage_put_request_duration = Lazy::new(Box::new(move || {
108+
object_storage_request_duration_clone.with_label_values(["put"])
109+
}) as _);
110+
let object_storage_request_duration_clone = object_storage_request_duration.clone();
111+
let object_storage_put_part_request_duration = Lazy::new(Box::new(move || {
112+
object_storage_request_duration_clone.with_label_values(["put_part"])
113+
}) as _);
93114

94115
StorageMetrics {
95116
fast_field_cache: CacheMetrics::for_component("fastfields"),
@@ -142,6 +163,9 @@ impl Default for StorageMetrics {
142163
object_storage_bulk_delete_requests_total,
143164
object_storage_delete_request_duration,
144165
object_storage_bulk_delete_request_duration,
166+
object_storage_get_request_duration,
167+
object_storage_put_request_duration,
168+
object_storage_put_part_request_duration,
145169
}
146170
}
147171
}

quickwit/quickwit-storage/src/object_storage/s3_compatible_storage.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,9 @@ impl S3CompatibleObjectStorage {
294294
crate::STORAGE_METRICS
295295
.object_storage_upload_num_bytes
296296
.inc_by(len);
297+
let _timer = crate::STORAGE_METRICS
298+
.object_storage_put_request_duration
299+
.start_timer();
297300

298301
self.s3_client
299302
.put_object()
@@ -429,6 +432,9 @@ impl S3CompatibleObjectStorage {
429432
crate::STORAGE_METRICS
430433
.object_storage_upload_num_bytes
431434
.inc_by(part.len());
435+
let _timer = crate::STORAGE_METRICS
436+
.object_storage_put_part_request_duration
437+
.start_timer();
432438

433439
let upload_part_output = self
434440
.s3_client
@@ -549,6 +555,9 @@ impl S3CompatibleObjectStorage {
549555
let range_str = range_opt.map(|range| format!("bytes={}-{}", range.start, range.end - 1));
550556

551557
crate::STORAGE_METRICS.object_storage_get_total.inc();
558+
let _timer = crate::STORAGE_METRICS
559+
.object_storage_get_request_duration
560+
.start_timer();
552561

553562
let get_object_output = self
554563
.s3_client

0 commit comments

Comments
 (0)