From 35145801a2f41f0abc1d7fffc4aed5318fb80243 Mon Sep 17 00:00:00 2001 From: Andreas Christou Date: Thu, 24 Apr 2025 13:26:28 +0100 Subject: [PATCH] Data Sources: Add gauge for response size (#104394) --- .../datasource_metrics_middleware.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/infra/httpclient/httpclientprovider/datasource_metrics_middleware.go b/pkg/infra/httpclient/httpclientprovider/datasource_metrics_middleware.go index 6334b373899..6a55c9f38ca 100644 --- a/pkg/infra/httpclient/httpclientprovider/datasource_metrics_middleware.go +++ b/pkg/infra/httpclient/httpclientprovider/datasource_metrics_middleware.go @@ -43,6 +43,14 @@ var ( }, []string{"datasource", "datasource_type", "secure_socks_ds_proxy_enabled"}, ) + datasourceResponseGauge = promauto.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "plugins", + Name: "datasource_response_size", + Help: "gauge of external data source response sizes returned to Grafana in bytes", + }, []string{"datasource", "datasource_type", "secure_socks_ds_proxy_enabled"}, + ) + datasourceRequestsInFlight = promauto.NewGaugeVec( prometheus.GaugeOpts{ Namespace: "grafana", @@ -102,6 +110,7 @@ func executeMiddleware(next http.RoundTripper, labels prometheus.Labels) http.Ro requestHistogram := datasourceRequestHistogram.MustCurryWith(labels) requestInFlight := datasourceRequestsInFlight.With(labels) responseSizeHistogram := datasourceResponseHistogram.With(labels) + responseSizeGauge := datasourceResponseGauge.With(labels) res, err := promhttp.InstrumentRoundTripperDuration(requestHistogram, promhttp.InstrumentRoundTripperCounter(requestCounter, @@ -114,6 +123,7 @@ func executeMiddleware(next http.RoundTripper, labels prometheus.Labels) http.Ro if res != nil && res.StatusCode != http.StatusSwitchingProtocols { res.Body = sdkhttpclient.CountBytesReader(res.Body, func(bytesRead int64) { responseSizeHistogram.Observe(float64(bytesRead)) + responseSizeGauge.Set(float64(bytesRead)) }) }