Skip to content

Commit 7ee8201

Browse files
Make the time_elapsed_db_query to be a histogram vec
1 parent 09eb015 commit 7ee8201

3 files changed

Lines changed: 17 additions & 15 deletions

File tree

aggregation_mode/gateway/src/http.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ impl GatewayServer {
260260
let duration = start.elapsed();
261261
state
262262
.metrics
263-
.register_db_response_time_post(duration.as_secs_f64());
263+
.register_db_response_time_post("sp1-post", duration.as_secs_f64());
264264

265265
HttpResponse::Ok().json(AppResponse::new_sucessfull(
266266
serde_json::json!({ "task_id": task_id.to_string() }),

aggregation_mode/gateway/src/metrics.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
use actix_web::{web, App, HttpResponse, HttpServer, Responder};
2-
use prometheus::{self, histogram_opts, Encoder, Histogram, Registry, TextEncoder};
2+
use prometheus::{self, histogram_opts, Encoder, HistogramVec, Registry, TextEncoder};
33
use std::sync::Arc;
44

55
#[derive(Clone, Debug)]
66
pub struct GatewayMetrics {
77
pub registry: Registry,
8-
pub time_elapsed_db_post: Histogram,
8+
pub time_elapsed_db_query: HistogramVec,
99
}
1010

1111
impl GatewayMetrics {
1212
pub fn start(metrics_port: u16) -> Result<Arc<Self>, prometheus::Error> {
1313
let registry = Registry::new();
1414

15-
let time_elapsed_db_post = Histogram::with_opts(histogram_opts!(
16-
"time_elapsed_db_post",
17-
"Time elapsed in DB posts"
18-
))?;
15+
let time_elapsed_db_query = HistogramVec::new(
16+
histogram_opts!("time_elapsed_db_query", "Time elapsed in DB posts"),
17+
&["query"],
18+
)?;
1919

20-
registry.register(Box::new(time_elapsed_db_post.clone()))?;
20+
registry.register(Box::new(time_elapsed_db_query.clone()))?;
2121

2222
// Arc is used because metrics are a shared resource accessed by both the background and metrics HTTP
2323
// server and the application code, across multiple Actix worker threads. The server outlives start(),
2424
// so the data must be static and safely shared between threads.
2525
let metrics = Arc::new(Self {
2626
registry,
27-
time_elapsed_db_post,
27+
time_elapsed_db_query,
2828
});
2929

3030
let server_metrics = metrics.clone();
@@ -57,7 +57,9 @@ impl GatewayMetrics {
5757
.body(buffer)
5858
}
5959

60-
pub fn register_db_response_time_post(&self, value: f64) {
61-
self.time_elapsed_db_post.observe(value);
60+
pub fn register_db_response_time_post(&self, query: &str, value: f64) {
61+
self.time_elapsed_db_query
62+
.with_label_values(&[query])
63+
.observe(value);
6264
}
6365
}

grafana/provisioning/dashboards/aligned/aggregation_mode_gateway.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"editable": true,
1919
"fiscalYearStartMonth": 0,
2020
"graphTooltip": 0,
21-
"id": 2,
21+
"id": 8,
2222
"links": [],
2323
"liveNow": false,
2424
"panels": [
@@ -388,7 +388,7 @@
388388
"uid": "prometheus"
389389
},
390390
"editorMode": "code",
391-
"expr": "histogram_quantile(0.50, sum by (le) (rate(time_elapsed_db_post_bucket[$__rate_interval])))",
391+
"expr": "histogram_quantile(0.50, sum by (le) (rate(time_elapsed_db_query_bucket{query=\"sp1-post\"}[$__rate_interval])))",
392392
"instant": false,
393393
"legendFormat": "__auto",
394394
"range": true,
@@ -576,7 +576,7 @@
576576
"uid": "prometheus"
577577
},
578578
"editorMode": "code",
579-
"expr": "sum(rate(time_elapsed_db_post_count[$__rate_interval]))",
579+
"expr": "sum(rate(time_elapsed_db_query_count[$__rate_interval]))",
580580
"instant": false,
581581
"legendFormat": "__auto",
582582
"range": true,
@@ -602,6 +602,6 @@
602602
"timezone": "",
603603
"title": "Aggregation Mode",
604604
"uid": "a66a5480-6a60-4b87-9d29-4f0f446edafd",
605-
"version": 12,
605+
"version": 1,
606606
"weekStart": ""
607607
}

0 commit comments

Comments
 (0)