From 41104933c14f552470a58e71fec00b67867ab2cf Mon Sep 17 00:00:00 2001 From: DevOrbitlabs Date: Tue, 31 Dec 2024 04:19:36 +0700 Subject: [PATCH] feat(metrics): Add cumulative transaction counters to improve observability (#12273) Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com> --- crates/storage/db/src/metrics.rs | 12 +++++++----- etc/grafana/dashboards/overview.json | 20 +++++++++++++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/crates/storage/db/src/metrics.rs b/crates/storage/db/src/metrics.rs index ed265d6e3..407909509 100644 --- a/crates/storage/db/src/metrics.rs +++ b/crates/storage/db/src/metrics.rs @@ -1,5 +1,5 @@ use crate::Tables; -use metrics::{Gauge, Histogram}; +use metrics::Histogram; use reth_metrics::{metrics::Counter, Metrics}; use rustc_hash::FxHashMap; use std::time::{Duration, Instant}; @@ -259,17 +259,19 @@ impl Labels { #[derive(Metrics, Clone)] #[metrics(scope = "database.transaction")] pub(crate) struct TransactionMetrics { - /// Total number of currently open database transactions - open_total: Gauge, + /// Total number of opened database transactions (cumulative) + opened_total: Counter, + /// Total number of closed database transactions (cumulative) + closed_total: Counter, } impl TransactionMetrics { pub(crate) fn record_open(&self) { - self.open_total.increment(1.0); + self.opened_total.increment(1); } pub(crate) fn record_close(&self) { - self.open_total.decrement(1.0); + self.closed_total.increment(1); } } diff --git a/etc/grafana/dashboards/overview.json b/etc/grafana/dashboards/overview.json index 39ccdffe3..cff7ede90 100644 --- a/etc/grafana/dashboards/overview.json +++ b/etc/grafana/dashboards/overview.json @@ -1724,15 +1724,29 @@ }, "editorMode": "code", "exemplar": false, - "expr": "sum(reth_database_transaction_open_total{instance=~\"$instance\"}) by (mode)", + "expr": "sum(reth_database_transaction_opened_total{instance=~\"$instance\"}) by (mode)", "format": "time_series", "instant": false, - "legendFormat": "{{mode}}", + "legendFormat": "Opened {{mode}}", "range": true, "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum(reth_database_transaction_closed_total{instance=~\"$instance\"}) by (mode)", + "format": "time_series", + "instant": false, + "legendFormat": "Closed {{mode}}", + "range": true, + "refId": "B" } ], - "title": "Number of open transactions", + "title": "Number of transactions", "type": "timeseries" }, {