From 9e6ed8b3fb7a5f9a8f785b32a47a73a36fbf8e10 Mon Sep 17 00:00:00 2001 From: Rim Rakhimov Date: Fri, 11 Sep 2026 15:08:38 +0400 Subject: [PATCH] feat: add total_wait_time and avg_wait_time as metrics --- pgdog/src/stats/pools.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pgdog/src/stats/pools.rs b/pgdog/src/stats/pools.rs index f082219d0..dd3051bb3 100644 --- a/pgdog/src/stats/pools.rs +++ b/pgdog/src/stats/pools.rs @@ -69,6 +69,8 @@ impl Pools { let mut avg_idle_xact_time = vec![]; let mut total_query_time = vec![]; let mut avg_query_time = vec![]; + let mut total_wait_time = vec![]; + let mut avg_wait_time = vec![]; let mut total_close = vec![]; let mut avg_close = vec![]; let mut total_server_errors = vec![]; @@ -241,6 +243,16 @@ impl Pools { measurement: millis(averages.query_time).into(), }); + total_wait_time.push(Measurement { + labels: labels.clone(), + measurement: millis(totals.wait_time).into(), + }); + + avg_wait_time.push(Measurement { + labels: labels.clone(), + measurement: millis(averages.wait_time).into(), + }); + total_close.push(Measurement { labels: labels.clone(), measurement: totals.close.into(), @@ -604,6 +616,22 @@ impl Pools { metric_type: None, })); + metrics.push(Metric::new(PoolMetric { + name: "total_wait_time".into(), + measurements: total_wait_time, + help: "Total time spent waiting for connection.".into(), + unit: None, + metric_type: Some("counter".into()), + })); + + metrics.push(Metric::new(PoolMetric { + name: "avg_wait_time".into(), + measurements: avg_wait_time, + help: "Average time spent waiting for connection.".into(), + unit: None, + metric_type: None, + })); + metrics.push(Metric::new(PoolMetric { name: "total_prepared_evictions".into(), measurements: total_close,