@@ -26,11 +26,11 @@ import (
2626
2727 querier_stats "github.com/cortexproject/cortex/pkg/querier/stats"
2828 "github.com/cortexproject/cortex/pkg/querier/tenantfederation"
29- "github.com/cortexproject/cortex/pkg/querier/tripperware"
3029 "github.com/cortexproject/cortex/pkg/tenant"
3130 util_api "github.com/cortexproject/cortex/pkg/util/api"
3231 "github.com/cortexproject/cortex/pkg/util/limiter"
3332 util_log "github.com/cortexproject/cortex/pkg/util/log"
33+ "github.com/cortexproject/cortex/pkg/util/requestmeta"
3434)
3535
3636type roundTripperFunc func (* http.Request ) (* http.Response , error )
@@ -216,7 +216,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
216216 }, nil
217217 }),
218218 additionalMetricsCheckFunc : func (h * Handler ) {
219- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonResponseBodySizeExceeded , tripperware .SourceAPI , userID ))
219+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonResponseBodySizeExceeded , requestmeta .SourceAPI , userID ))
220220 assert .Equal (t , float64 (1 ), v )
221221 },
222222 expectedStatusCode : http .StatusRequestEntityTooLarge ,
@@ -232,7 +232,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
232232 }, nil
233233 }),
234234 additionalMetricsCheckFunc : func (h * Handler ) {
235- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTooManyRequests , tripperware .SourceAPI , userID ))
235+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTooManyRequests , requestmeta .SourceAPI , userID ))
236236 assert .Equal (t , float64 (1 ), v )
237237 },
238238 expectedStatusCode : http .StatusTooManyRequests ,
@@ -248,7 +248,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
248248 }, nil
249249 }),
250250 additionalMetricsCheckFunc : func (h * Handler ) {
251- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTooManySamples , tripperware .SourceAPI , userID ))
251+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTooManySamples , requestmeta .SourceAPI , userID ))
252252 assert .Equal (t , float64 (1 ), v )
253253 },
254254 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -264,7 +264,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
264264 }, nil
265265 }),
266266 additionalMetricsCheckFunc : func (h * Handler ) {
267- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTimeRangeExceeded , tripperware .SourceAPI , userID ))
267+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonTimeRangeExceeded , requestmeta .SourceAPI , userID ))
268268 assert .Equal (t , float64 (1 ), v )
269269 },
270270 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -280,7 +280,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
280280 }, nil
281281 }),
282282 additionalMetricsCheckFunc : func (h * Handler ) {
283- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonSeriesFetched , tripperware .SourceAPI , userID ))
283+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonSeriesFetched , requestmeta .SourceAPI , userID ))
284284 assert .Equal (t , float64 (1 ), v )
285285 },
286286 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -296,7 +296,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
296296 }, nil
297297 }),
298298 additionalMetricsCheckFunc : func (h * Handler ) {
299- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunksFetched , tripperware .SourceAPI , userID ))
299+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunksFetched , requestmeta .SourceAPI , userID ))
300300 assert .Equal (t , float64 (1 ), v )
301301 },
302302 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -312,7 +312,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
312312 }, nil
313313 }),
314314 additionalMetricsCheckFunc : func (h * Handler ) {
315- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunkBytesFetched , tripperware .SourceAPI , userID ))
315+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunkBytesFetched , requestmeta .SourceAPI , userID ))
316316 assert .Equal (t , float64 (1 ), v )
317317 },
318318 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -328,7 +328,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
328328 }, nil
329329 }),
330330 additionalMetricsCheckFunc : func (h * Handler ) {
331- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonDataBytesFetched , tripperware .SourceAPI , userID ))
331+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonDataBytesFetched , requestmeta .SourceAPI , userID ))
332332 assert .Equal (t , float64 (1 ), v )
333333 },
334334 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -344,7 +344,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
344344 }, nil
345345 }),
346346 additionalMetricsCheckFunc : func (h * Handler ) {
347- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonSeriesLimitStoreGateway , tripperware .SourceAPI , userID ))
347+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonSeriesLimitStoreGateway , requestmeta .SourceAPI , userID ))
348348 assert .Equal (t , float64 (1 ), v )
349349 },
350350 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -360,7 +360,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
360360 }, nil
361361 }),
362362 additionalMetricsCheckFunc : func (h * Handler ) {
363- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunksLimitStoreGateway , tripperware .SourceAPI , userID ))
363+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonChunksLimitStoreGateway , requestmeta .SourceAPI , userID ))
364364 assert .Equal (t , float64 (1 ), v )
365365 },
366366 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -376,7 +376,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
376376 }, nil
377377 }),
378378 additionalMetricsCheckFunc : func (h * Handler ) {
379- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonBytesLimitStoreGateway , tripperware .SourceAPI , userID ))
379+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonBytesLimitStoreGateway , requestmeta .SourceAPI , userID ))
380380 assert .Equal (t , float64 (1 ), v )
381381 },
382382 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -393,7 +393,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
393393 }, nil
394394 }),
395395 additionalMetricsCheckFunc : func (h * Handler ) {
396- v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonResourceExhausted , tripperware .SourceAPI , userID ))
396+ v := promtest .ToFloat64 (h .rejectedQueries .WithLabelValues (reasonResourceExhausted , requestmeta .SourceAPI , userID ))
397397 assert .Equal (t , float64 (1 ), v )
398398 },
399399 expectedStatusCode : http .StatusUnprocessableEntity ,
@@ -410,7 +410,7 @@ func TestHandler_ServeHTTP(t *testing.T) {
410410 }, nil
411411 }),
412412 additionalMetricsCheckFunc : func (h * Handler ) {
413- v := promtest .ToFloat64 (h .slowQueries .WithLabelValues (tripperware .SourceAPI , userID ))
413+ v := promtest .ToFloat64 (h .slowQueries .WithLabelValues (requestmeta .SourceAPI , userID ))
414414 assert .Equal (t , float64 (1 ), v )
415415 },
416416 expectedStatusCode : http .StatusOK ,
@@ -472,12 +472,12 @@ func TestReportQueryStatsFormat(t *testing.T) {
472472 tests := map [string ]testCase {
473473 "should not include query and header details if empty" : {
474474 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0` ,
475- source : tripperware .SourceAPI ,
475+ source : requestmeta .SourceAPI ,
476476 },
477477 "should include query length and string at the end" : {
478478 queryString : url .Values (map [string ][]string {"query" : {"up" }}),
479479 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 query_length=2 param_query=up` ,
480- source : tripperware .SourceAPI ,
480+ source : requestmeta .SourceAPI ,
481481 },
482482 "should include query stats" : {
483483 queryStats : & querier_stats.QueryStats {
@@ -494,17 +494,17 @@ func TestReportQueryStatsFormat(t *testing.T) {
494494 },
495495 },
496496 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=3 response_series_count=100 fetched_series_count=100 fetched_chunks_count=200 fetched_samples_count=300 fetched_chunks_bytes=1024 fetched_data_bytes=2048 split_queries=10 status_code=200 response_size=1000 samples_scanned=0 query_storage_wall_time_seconds=6000` ,
497- source : tripperware .SourceAPI ,
497+ source : requestmeta .SourceAPI ,
498498 },
499499 "should include user agent" : {
500500 header : http.Header {"User-Agent" : []string {"Grafana" }},
501501 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 user_agent=Grafana` ,
502- source : tripperware .SourceAPI ,
502+ source : requestmeta .SourceAPI ,
503503 },
504504 "should include response error" : {
505505 responseErr : errors .New ("foo_err" ),
506506 expectedLog : `level=error msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 error=foo_err` ,
507- source : tripperware .SourceAPI ,
507+ source : requestmeta .SourceAPI ,
508508 },
509509 "should include query priority" : {
510510 queryString : url .Values (map [string ][]string {"query" : {"up" }}),
@@ -513,7 +513,7 @@ func TestReportQueryStatsFormat(t *testing.T) {
513513 PriorityAssigned : true ,
514514 },
515515 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 query_length=2 priority=99 param_query=up` ,
516- source : tripperware .SourceAPI ,
516+ source : requestmeta .SourceAPI ,
517517 },
518518 "should include data fetch min and max time" : {
519519 queryString : url .Values (map [string ][]string {"query" : {"up" }}),
@@ -522,7 +522,7 @@ func TestReportQueryStatsFormat(t *testing.T) {
522522 DataSelectMinTime : 1704067200000 ,
523523 },
524524 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 data_select_max_time=1704153600 data_select_min_time=1704067200 query_length=2 param_query=up` ,
525- source : tripperware .SourceAPI ,
525+ source : requestmeta .SourceAPI ,
526526 },
527527 "should include query stats with store gateway stats" : {
528528 queryStats : & querier_stats.QueryStats {
@@ -541,16 +541,16 @@ func TestReportQueryStatsFormat(t *testing.T) {
541541 },
542542 },
543543 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=3 response_series_count=100 fetched_series_count=100 fetched_chunks_count=200 fetched_samples_count=300 fetched_chunks_bytes=1024 fetched_data_bytes=2048 split_queries=10 status_code=200 response_size=1000 samples_scanned=0 store_gateway_touched_postings_count=20 store_gateway_touched_posting_bytes=200 query_storage_wall_time_seconds=6000` ,
544- source : tripperware .SourceAPI ,
544+ source : requestmeta .SourceAPI ,
545545 },
546546 "should not report a log" : {
547547 expectedLog : `` ,
548- source : tripperware .SourceRuler ,
548+ source : requestmeta .SourceRuler ,
549549 enabledRulerQueryStatsLog : false ,
550550 },
551551 "should report a log" : {
552552 expectedLog : `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0` ,
553- source : tripperware .SourceRuler ,
553+ source : requestmeta .SourceRuler ,
554554 enabledRulerQueryStatsLog : true ,
555555 },
556556 }
@@ -559,6 +559,7 @@ func TestReportQueryStatsFormat(t *testing.T) {
559559 t .Run (testName , func (t * testing.T ) {
560560 handler := NewHandler (HandlerConfig {QueryStatsEnabled : true , EnabledRulerQueryStatsLog : testData .enabledRulerQueryStatsLog }, tenantfederation.Config {}, http .DefaultTransport , logger , nil )
561561 req .Header = testData .header
562+ req = req .WithContext (requestmeta .ContextWithRequestSource (context .Background (), testData .source ))
562563 handler .reportQueryStats (req , testData .source , userID , testData .queryString , responseTime , testData .queryStats , testData .responseErr , statusCode , resp )
563564 data , err := io .ReadAll (outputBuf )
564565 require .NoError (t , err )
@@ -706,7 +707,7 @@ func Test_TenantFederation_MaxTenant(t *testing.T) {
706707 require .Contains (t , string (body ), test .expectedErrMsg )
707708
708709 if strings .Contains (test .expectedErrMsg , "too many tenants" ) {
709- v := promtest .ToFloat64 (handler .rejectedQueries .WithLabelValues (reasonTooManyTenants , tripperware .SourceAPI , test .orgId ))
710+ v := promtest .ToFloat64 (handler .rejectedQueries .WithLabelValues (reasonTooManyTenants , requestmeta .SourceAPI , test .orgId ))
710711 assert .Equal (t , float64 (1 ), v )
711712 }
712713 }
0 commit comments