Skip to content

Commit 9c52689

Browse files
yeya24t00350320
authored andcommitted
Log query params in query frontend when error (#5005)
* log query params in query frontend when error Signed-off-by: Ben Ye <[email protected]> * log errors Signed-off-by: Ben Ye <[email protected]> * change log level when error Signed-off-by: Ben Ye <[email protected]> * fix lint Signed-off-by: Ben Ye <[email protected]> * update changelog Signed-off-by: Ben Ye <[email protected]> Signed-off-by: Ben Ye <[email protected]>
1 parent fdc734e commit 9c52689

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
## master / unreleased
44
* [ENHANCEMENT] Update Go version to 1.19.3. #4988
5+
* [ENHANCEMENT] Querier: limit series query to only ingesters if `start` param is not specified. #4976
56
* [FEATURE] Querier/Query Frontend: support Prometheus /api/v1/status/buildinfo API. #4978
6-
* [ENHANCEMENT] Querier: limit series query to only ingesters if `start` param is not been specified. #4976
7-
87
* [FEATURE] Ingester: Add active series to all_user_stats page. #4972
98
* [FEATURE] Ingester: Added `-blocks-storage.tsdb.head-chunks-write-queue-size` allowing to configure the size of the in-memory queue used before flushing chunks to the disk . #5000
9+
* [FEATURE] Query Frontend: Log query params in query frontend even if error happens. #5005
1010

1111
## 1.14.0 in progress
1212

pkg/frontend/transport/handler.go

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/prometheus/client_golang/prometheus/promauto"
2121
"github.com/weaveworks/common/httpgrpc"
2222
"github.com/weaveworks/common/httpgrpc/server"
23+
"google.golang.org/grpc/status"
2324

2425
querier_stats "github.com/cortexproject/cortex/pkg/querier/stats"
2526
"github.com/cortexproject/cortex/pkg/tenant"
@@ -136,6 +137,19 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
136137
resp, err := f.roundTripper.RoundTrip(r)
137138
queryResponseTime := time.Since(startTime)
138139

140+
// Check whether we should parse the query string.
141+
shouldReportSlowQuery := f.cfg.LogQueriesLongerThan != 0 && queryResponseTime > f.cfg.LogQueriesLongerThan
142+
if shouldReportSlowQuery || f.cfg.QueryStatsEnabled {
143+
queryString = f.parseRequestQueryString(r, buf)
144+
}
145+
146+
if shouldReportSlowQuery {
147+
f.reportSlowQuery(r, queryString, queryResponseTime)
148+
}
149+
if f.cfg.QueryStatsEnabled {
150+
f.reportQueryStats(r, queryString, queryResponseTime, stats, err)
151+
}
152+
139153
if err != nil {
140154
writeError(w, err)
141155
return
@@ -156,19 +170,6 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
156170
if err != nil && !errors.Is(err, syscall.EPIPE) {
157171
level.Error(util_log.WithContext(r.Context(), f.log)).Log("msg", "write response body error", "bytesCopied", bytesCopied, "err", err)
158172
}
159-
160-
// Check whether we should parse the query string.
161-
shouldReportSlowQuery := f.cfg.LogQueriesLongerThan != 0 && queryResponseTime > f.cfg.LogQueriesLongerThan
162-
if shouldReportSlowQuery || f.cfg.QueryStatsEnabled {
163-
queryString = f.parseRequestQueryString(r, buf)
164-
}
165-
166-
if shouldReportSlowQuery {
167-
f.reportSlowQuery(r, queryString, queryResponseTime)
168-
}
169-
if f.cfg.QueryStatsEnabled {
170-
f.reportQueryStats(r, queryString, queryResponseTime, stats)
171-
}
172173
}
173174

174175
// reportSlowQuery reports slow queries.
@@ -184,7 +185,7 @@ func (f *Handler) reportSlowQuery(r *http.Request, queryString url.Values, query
184185
level.Info(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
185186
}
186187

187-
func (f *Handler) reportQueryStats(r *http.Request, queryString url.Values, queryResponseTime time.Duration, stats *querier_stats.Stats) {
188+
func (f *Handler) reportQueryStats(r *http.Request, queryString url.Values, queryResponseTime time.Duration, stats *querier_stats.Stats, error error) {
188189
tenantIDs, err := tenant.TenantIDs(r.Context())
189190
if err != nil {
190191
return
@@ -215,7 +216,17 @@ func (f *Handler) reportQueryStats(r *http.Request, queryString url.Values, quer
215216
"fetched_data_bytes", numDataBytes,
216217
}, formatQueryString(queryString)...)
217218

218-
level.Info(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
219+
if error != nil {
220+
s, ok := status.FromError(error)
221+
if !ok {
222+
logMessage = append(logMessage, "error", error)
223+
} else {
224+
logMessage = append(logMessage, "error", s.Message())
225+
}
226+
level.Error(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
227+
} else {
228+
level.Info(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
229+
}
219230
}
220231

221232
func (f *Handler) parseRequestQueryString(r *http.Request, bodyBuf bytes.Buffer) url.Values {

0 commit comments

Comments
 (0)