@@ -30,6 +30,7 @@ import (
30
30
"github.com/cortexproject/cortex/pkg/querier/iterators"
31
31
"github.com/cortexproject/cortex/pkg/querier/lazyquery"
32
32
seriesset "github.com/cortexproject/cortex/pkg/querier/series"
33
+ querier_stats "github.com/cortexproject/cortex/pkg/querier/stats"
33
34
"github.com/cortexproject/cortex/pkg/tenant"
34
35
"github.com/cortexproject/cortex/pkg/util"
35
36
"github.com/cortexproject/cortex/pkg/util/flagext"
@@ -284,10 +285,11 @@ type querier struct {
284
285
limiterHolder * limiterHolder
285
286
}
286
287
287
- func (q querier ) setupFromCtx (ctx context.Context ) (context.Context , string , int64 , int64 , storage.Querier , []storage.Querier , error ) {
288
+ func (q querier ) setupFromCtx (ctx context.Context ) (context.Context , * querier_stats.QueryStats , string , int64 , int64 , storage.Querier , []storage.Querier , error ) {
289
+ stats := querier_stats .FromContext (ctx )
288
290
userID , err := tenant .TenantID (ctx )
289
291
if err != nil {
290
- return ctx , userID , 0 , 0 , nil , nil , err
292
+ return ctx , stats , userID , 0 , 0 , nil , nil , err
291
293
}
292
294
293
295
q .limiterHolder .limiterInitializer .Do (func () {
@@ -298,12 +300,12 @@ func (q querier) setupFromCtx(ctx context.Context) (context.Context, string, int
298
300
299
301
mint , maxt , err := validateQueryTimeRange (ctx , userID , q .mint , q .maxt , q .limits , q .maxQueryIntoFuture )
300
302
if err != nil {
301
- return ctx , userID , 0 , 0 , nil , nil , err
303
+ return ctx , stats , userID , 0 , 0 , nil , nil , err
302
304
}
303
305
304
306
dqr , err := q .distributor .Querier (mint , maxt )
305
307
if err != nil {
306
- return ctx , userID , 0 , 0 , nil , nil , err
308
+ return ctx , stats , userID , 0 , 0 , nil , nil , err
307
309
}
308
310
metadataQuerier := dqr
309
311
@@ -319,23 +321,27 @@ func (q querier) setupFromCtx(ctx context.Context) (context.Context, string, int
319
321
320
322
cqr , err := s .Querier (mint , maxt )
321
323
if err != nil {
322
- return ctx , userID , 0 , 0 , nil , nil , err
324
+ return ctx , stats , userID , 0 , 0 , nil , nil , err
323
325
}
324
326
325
327
queriers = append (queriers , cqr )
326
328
}
327
- return ctx , userID , mint , maxt , metadataQuerier , queriers , nil
329
+ return ctx , stats , userID , mint , maxt , metadataQuerier , queriers , nil
328
330
}
329
331
330
332
// Select implements storage.Querier interface.
331
333
// The bool passed is ignored because the series is always sorted.
332
334
func (q querier ) Select (ctx context.Context , sortSeries bool , sp * storage.SelectHints , matchers ... * labels.Matcher ) storage.SeriesSet {
333
- ctx , userID , mint , maxt , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
335
+ ctx , stats , userID , mint , maxt , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
334
336
if err == errEmptyTimeRange {
335
337
return storage .EmptySeriesSet ()
336
338
} else if err != nil {
337
339
return storage .ErrSeriesSet (err )
338
340
}
341
+ startT := time .Now ()
342
+ defer func () {
343
+ stats .AddQueryStorageWallTime (time .Since (startT ))
344
+ }()
339
345
340
346
log , ctx := spanlogger .New (ctx , "querier.Select" )
341
347
defer log .Span .Finish ()
@@ -426,12 +432,17 @@ func (q querier) Select(ctx context.Context, sortSeries bool, sp *storage.Select
426
432
427
433
// LabelValues implements storage.Querier.
428
434
func (q querier ) LabelValues (ctx context.Context , name string , matchers ... * labels.Matcher ) ([]string , annotations.Annotations , error ) {
429
- ctx , _ , _ , _ , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
435
+ ctx , stats , _ , _ , _ , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
430
436
if err == errEmptyTimeRange {
431
437
return nil , nil , nil
432
438
} else if err != nil {
433
439
return nil , nil , err
434
440
}
441
+ startT := time .Now ()
442
+ defer func () {
443
+ stats .AddQueryStorageWallTime (time .Since (startT ))
444
+ }()
445
+
435
446
if ! q .queryStoreForLabels {
436
447
return metadataQuerier .LabelValues (ctx , name , matchers ... )
437
448
}
@@ -475,12 +486,16 @@ func (q querier) LabelValues(ctx context.Context, name string, matchers ...*labe
475
486
}
476
487
477
488
func (q querier ) LabelNames (ctx context.Context , matchers ... * labels.Matcher ) ([]string , annotations.Annotations , error ) {
478
- ctx , _ , _ , _ , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
489
+ ctx , stats , _ , _ , _ , metadataQuerier , queriers , err := q .setupFromCtx (ctx )
479
490
if err == errEmptyTimeRange {
480
491
return nil , nil , nil
481
492
} else if err != nil {
482
493
return nil , nil , err
483
494
}
495
+ startT := time .Now ()
496
+ defer func () {
497
+ stats .AddQueryStorageWallTime (time .Since (startT ))
498
+ }()
484
499
485
500
if ! q .queryStoreForLabels {
486
501
return metadataQuerier .LabelNames (ctx , matchers ... )
0 commit comments