From 1614fdfe8a66e2ef37121e6006f15d1ea0429f11 Mon Sep 17 00:00:00 2001 From: SungJin1212 Date: Tue, 26 Aug 2025 13:51:55 +0900 Subject: [PATCH] Add parse query op label to queries total metric Signed-off-by: SungJin1212 --- CHANGELOG.md | 2 +- pkg/querier/tripperware/roundtrip.go | 4 ++++ pkg/querier/tripperware/roundtrip_test.go | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9b4196686c..2d359c31e8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,7 +69,7 @@ * [ENHANCEMENT] Ingester: Add new metric `cortex_ingester_push_errors_total` to track reasons for ingester request failures. #6901 * [ENHANCEMENT] Ring: Expose `detailed_metrics_enabled` for all rings. Default true. #6926 * [ENHANCEMENT] Parquet Storage: Allow Parquet Queryable to disable fallback to Store Gateway. #6920 -* [ENHANCEMENT] Query Frontend: Add a `format_query` label value to the `op` label at `cortex_query_frontend_queries_total` metric. #6925 +* [ENHANCEMENT] Query Frontend: Add a `format_query` and `parse_query` labels value to the `op` label at `cortex_query_frontend_queries_total` metric. #6925 #6990 * [ENHANCEMENT] API: add request ID injection to context to enable tracking requests across downstream services. #6895 * [ENHANCEMENT] gRPC: Add gRPC Channelz monitoring. #6950 * [ENHANCEMENT] Upgrade build image and Go version to 1.24.6. #6970 #6976 diff --git a/pkg/querier/tripperware/roundtrip.go b/pkg/querier/tripperware/roundtrip.go index b7759b8b45b..5a5ff5ca8a0 100644 --- a/pkg/querier/tripperware/roundtrip.go +++ b/pkg/querier/tripperware/roundtrip.go @@ -47,6 +47,7 @@ const ( opTypeMetadata = "metadata" opTypeQueryExemplars = "query_exemplars" opTypeFormatQuery = "format_query" + opTypeParseQuery = "parse_query" ) // HandlerFunc is like http.HandlerFunc, but for Handler. @@ -154,6 +155,7 @@ func NewQueryTripperware( isMetadata := strings.HasSuffix(r.URL.Path, "/metadata") isQueryExemplars := strings.HasSuffix(r.URL.Path, "/query_exemplars") isFormatQuery := strings.HasSuffix(r.URL.Path, "/format_query") + isParseQuery := strings.HasSuffix(r.URL.Path, "/parse_query") op := opTypeQuery switch { @@ -173,6 +175,8 @@ func NewQueryTripperware( op = opTypeQueryExemplars case isFormatQuery: op = opTypeFormatQuery + case isParseQuery: + op = opTypeParseQuery } tenantIDs, err := tenant.TenantIDs(r.Context()) diff --git a/pkg/querier/tripperware/roundtrip_test.go b/pkg/querier/tripperware/roundtrip_test.go index ff0ed99d8e0..0f4d953fee1 100644 --- a/pkg/querier/tripperware/roundtrip_test.go +++ b/pkg/querier/tripperware/roundtrip_test.go @@ -39,6 +39,7 @@ const ( labelValuesQuery = "/api/v1/label/label/values" metadataQuery = "/api/v1/metadata" formatQuery = "/api/v1/format_query?query=foo/bar" + parseQuery = "/api/v1/parse_query?query=foo/bar" responseBody = `{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"foo":"bar"},"values":[[1536673680,"137"],[1536673780,"137"]]}]}}` instantResponseBody = `{"status":"success","data":{"resultType":"vector","result":[{"metric":{"foo":"bar"},"values":[[1536673680,"137"],[1536673780,"137"]]}]}}` @@ -242,6 +243,18 @@ cortex_query_frontend_queries_total{op="query_range", source="api", user="1"} 1 # HELP cortex_query_frontend_queries_total Total queries sent per tenant. # TYPE cortex_query_frontend_queries_total counter cortex_query_frontend_queries_total{op="format_query", source="api", user="1"} 1 +`, + }, + { + path: parseQuery, + expectedBody: "bar", + limits: defaultOverrides, + maxSubQuerySteps: 11000, + userAgent: "dummyUserAgent/1.2", + expectedMetric: ` +# HELP cortex_query_frontend_queries_total Total queries sent per tenant. +# TYPE cortex_query_frontend_queries_total counter +cortex_query_frontend_queries_total{op="parse_query", source="api", user="1"} 1 `, }, {