@@ -59,10 +59,12 @@ type Handler struct {
5959 failedQueryCache * utils.FailedQueryCache
6060
6161 // Metrics.
62- querySeconds * prometheus.CounterVec
63- querySeries * prometheus.CounterVec
64- queryBytes * prometheus.CounterVec
65- activeUsers * util.ActiveUsersCleanupService
62+ querySeconds * prometheus.CounterVec
63+ querySeries * prometheus.CounterVec
64+ queryBytes * prometheus.CounterVec
65+ activeUsers * util.ActiveUsersCleanupService
66+ slowQueryCount prometheus.Counter
67+ failedQueryCount prometheus.Counter
6668}
6769
6870// NewHandler creates a new frontend handler.
@@ -108,16 +110,24 @@ func NewHandler(cfg HandlerConfig, roundTripper http.RoundTripper, log log.Logge
108110 _ = h .activeUsers .StartAsync (context .Background ())
109111 }
110112
113+ h .slowQueryCount = promauto .With (reg ).NewCounter (prometheus.CounterOpts {
114+ Name : "cortex_slow_query_total" ,
115+ Help : "Total number of slow queries detected." ,
116+ })
117+ h .failedQueryCount = promauto .With (reg ).NewCounter (prometheus.CounterOpts {
118+ Name : "cortex_failed_query_total" ,
119+ Help : "Total number of failed queries detected." ,
120+ })
111121 return h
112122}
113123
114124func (f * Handler ) ServeHTTP (w http.ResponseWriter , r * http.Request ) {
115125 var (
116- stats * querier_stats.Stats
126+ stats * querier_stats.Stats
117127 // For failed/slow query logging and query stats.
118128 queryString url.Values
119129 // For failed query cache
120- urlQuery url.Values
130+ urlQuery url.Values
121131 )
122132
123133 // Initialise the stats in the context and make sure it's propagated
@@ -206,6 +216,7 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
206216}
207217
208218func (f * Handler ) reportFailedQuery (r * http.Request , queryString url.Values , err error , queryResponseTime time.Duration ) {
219+ f .failedQueryCount .Inc ()
209220 // NOTE(GiedriusS): see https://github.com/grafana/grafana/pull/60301 for more info.
210221 grafanaDashboardUID := "-"
211222 if dashboardUID := r .Header .Get ("X-Dashboard-Uid" ); dashboardUID != "" {
@@ -235,6 +246,7 @@ func (f *Handler) reportFailedQuery(r *http.Request, queryString url.Values, err
235246
236247// reportSlowQuery reports slow queries.
237248func (f * Handler ) reportSlowQuery (r * http.Request , responseHeaders http.Header , queryString url.Values , queryResponseTime time.Duration ) {
249+ f .slowQueryCount .Inc ()
238250 // NOTE(GiedriusS): see https://github.com/grafana/grafana/pull/60301 for more info.
239251 grafanaDashboardUID := "-"
240252 if dashboardUID := r .Header .Get ("X-Dashboard-Uid" ); dashboardUID != "" {
0 commit comments