From c505d26430e85baa20429675c8958d42ea67adf4 Mon Sep 17 00:00:00 2001 From: Eric Leijonmarck Date: Tue, 18 Apr 2023 11:12:19 +0100 Subject: [PATCH] APIkeys: Add metrics for apikey endpoints (#66732) add metrics for apikey endpoints --- pkg/api/apikey.go | 4 ++++ pkg/infra/metrics/metrics.go | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/pkg/api/apikey.go b/pkg/api/apikey.go index ecd2b1e03a0..35f15fb1831 100644 --- a/pkg/api/apikey.go +++ b/pkg/api/apikey.go @@ -9,6 +9,7 @@ import ( "github.com/grafana/grafana/pkg/api/dtos" "github.com/grafana/grafana/pkg/api/response" "github.com/grafana/grafana/pkg/components/apikeygen" + "github.com/grafana/grafana/pkg/infra/metrics" "github.com/grafana/grafana/pkg/services/apikey" contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model" "github.com/grafana/grafana/pkg/web" @@ -64,6 +65,7 @@ func (hs *HTTPServer) GetAPIKeys(c *contextmodel.ReqContext) response.Response { } } + metrics.MApiAPIkeysGet.Inc() return response.JSON(http.StatusOK, result) } @@ -99,6 +101,7 @@ func (hs *HTTPServer) DeleteAPIKey(c *contextmodel.ReqContext) response.Response return response.Error(status, "Failed to delete API key", err) } + metrics.MApiAPIkeysDelete.Inc() return response.Success("API key deleted") } @@ -166,6 +169,7 @@ func (hs *HTTPServer) AddAPIKey(c *contextmodel.ReqContext) response.Response { Key: newKeyInfo.ClientSecret, } + metrics.MApiAPIkeysCreate.Inc() return response.JSON(http.StatusOK, result) } diff --git a/pkg/infra/metrics/metrics.go b/pkg/infra/metrics/metrics.go index c90c2177c66..4cce0d01d31 100644 --- a/pkg/infra/metrics/metrics.go +++ b/pkg/infra/metrics/metrics.go @@ -109,6 +109,12 @@ var ( // MPublicDashboardDatasourceQuerySuccess is a metric counter for successful queries labelled by datasource MPublicDashboardDatasourceQuerySuccess *prometheus.CounterVec + + MApiAPIkeysGet prometheus.Counter + + MApiAPIkeysCreate prometheus.Counter + + MApiAPIkeysDelete prometheus.Counter ) // Timers @@ -446,6 +452,24 @@ func init() { Namespace: ExporterName, }, []string{"datasource", "status"}, map[string][]string{"status": pubdash.QueryResultStatuses}) + MApiAPIkeysGet = metricutil.NewCounterStartingAtZero(prometheus.CounterOpts{ + Name: "api_api_keys_get_total", + Help: "counter for getting api keys", + Namespace: ExporterName, + }) + + MApiAPIkeysCreate = metricutil.NewCounterStartingAtZero(prometheus.CounterOpts{ + Name: "api_api_keys_create_total", + Help: "counter for creating api keys", + Namespace: ExporterName, + }) + + MApiAPIkeysDelete = metricutil.NewCounterStartingAtZero(prometheus.CounterOpts{ + Name: "api_api_keys_delete_total", + Help: "counter for deleting api keys", + Namespace: ExporterName, + }) + MStatTotalDashboards = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "stat_totals_dashboard", Help: "total amount of dashboards", @@ -715,5 +739,8 @@ func initMetricVars() { MPublicDashboardRequestCount, MPublicDashboardDatasourceQuerySuccess, MStatTotalCorrelations, + MApiAPIkeysGet, + MApiAPIkeysCreate, + MApiAPIkeysDelete, ) }