From 628c0f42fef46b2719cae93a81ae1a8e53ee68fe Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Thu, 25 Aug 2022 09:22:42 +0300 Subject: [PATCH] [#680] Use gauge instead of counter for metrics Signed-off-by: Denis Kirillov --- cmd/s3-gw/app_metrics.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/cmd/s3-gw/app_metrics.go b/cmd/s3-gw/app_metrics.go index 5ca423a..aa58199 100644 --- a/cmd/s3-gw/app_metrics.go +++ b/cmd/s3-gw/app_metrics.go @@ -47,9 +47,9 @@ type stateMetrics struct { type poolMetricsCollector struct { poolStatScraper StatisticScraper - overallErrors prometheus.Counter - overallNodeErrors *prometheus.CounterVec - overallNodeRequests *prometheus.CounterVec + overallErrors prometheus.Gauge + overallNodeErrors *prometheus.GaugeVec + overallNodeRequests *prometheus.GaugeVec currentErrors *prometheus.GaugeVec requestDuration *prometheus.GaugeVec } @@ -87,8 +87,8 @@ func (m stateMetrics) SetHealth(s int32) { } func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector { - overallErrors := prometheus.NewCounter( - prometheus.CounterOpts{ + overallErrors := prometheus.NewGauge( + prometheus.GaugeOpts{ Namespace: namespace, Subsystem: poolSubsystem, Name: "overall_errors", @@ -96,8 +96,8 @@ func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector { }, ) - overallNodeErrors := prometheus.NewCounterVec( - prometheus.CounterOpts{ + overallNodeErrors := prometheus.NewGaugeVec( + prometheus.GaugeOpts{ Namespace: namespace, Subsystem: poolSubsystem, Name: "overall_node_errors", @@ -108,8 +108,8 @@ func newPoolMetricsCollector(scraper StatisticScraper) *poolMetricsCollector { }, ) - overallNodeRequests := prometheus.NewCounterVec( - prometheus.CounterOpts{ + overallNodeRequests := prometheus.NewGaugeVec( + prometheus.GaugeOpts{ Namespace: namespace, Subsystem: poolSubsystem, Name: "overall_node_requests", @@ -179,18 +179,20 @@ func (m *poolMetricsCollector) register() { func (m *poolMetricsCollector) updateStatistic() { stat := m.poolStatScraper.Statistic() + m.overallNodeErrors.Reset() + m.overallNodeRequests.Reset() m.currentErrors.Reset() m.requestDuration.Reset() for _, node := range stat.Nodes() { - m.overallNodeErrors.WithLabelValues(node.Address()).Add(float64(node.OverallErrors())) - m.overallNodeRequests.WithLabelValues(node.Address()).Add(float64(node.Requests())) + m.overallNodeErrors.WithLabelValues(node.Address()).Set(float64(node.OverallErrors())) + m.overallNodeRequests.WithLabelValues(node.Address()).Set(float64(node.Requests())) m.currentErrors.WithLabelValues(node.Address()).Set(float64(node.CurrentErrors())) m.updateRequestsDuration(node) } - m.overallErrors.Add(float64(stat.OverallErrors())) + m.overallErrors.Set(float64(stat.OverallErrors())) } func (m *poolMetricsCollector) updateRequestsDuration(node pool.NodeStatistic) {