Skip to content

Commit 1dfd5f9

Browse files
authored
Put query field at the end of query stats log (#5622)
* put query log at the end to avoid truncating other fields Signed-off-by: Ben Ye <benye@amazon.com> * fix lint Signed-off-by: Ben Ye <benye@amazon.com> * fix lint again Signed-off-by: Ben Ye <benye@amazon.com> --------- Signed-off-by: Ben Ye <benye@amazon.com>
1 parent f608df2 commit 1dfd5f9

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

pkg/frontend/transport/handler.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,17 +271,18 @@ func formatGrafanaStatsFields(r *http.Request) []interface{} {
271271

272272
// reportSlowQuery reports slow queries.
273273
func (f *Handler) reportSlowQuery(r *http.Request, queryString url.Values, queryResponseTime time.Duration) {
274-
logMessage := append([]interface{}{
274+
logMessage := []interface{}{
275275
"msg", "slow query detected",
276276
"method", r.Method,
277277
"host", r.Host,
278278
"path", r.URL.Path,
279279
"time_taken", queryResponseTime.String(),
280-
}, formatQueryString(queryString)...)
280+
}
281281
grafanaFields := formatGrafanaStatsFields(r)
282282
if len(grafanaFields) > 0 {
283283
logMessage = append(logMessage, grafanaFields...)
284284
}
285+
logMessage = append(logMessage, formatQueryString(queryString)...)
285286

286287
level.Info(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
287288
}
@@ -327,7 +328,6 @@ func (f *Handler) reportQueryStats(r *http.Request, userID string, queryString u
327328
"response_size", contentLength,
328329
}, stats.LoadExtraFields()...)
329330

330-
logMessage = append(logMessage, formatQueryString(queryString)...)
331331
grafanaFields := formatGrafanaStatsFields(r)
332332
if len(grafanaFields) > 0 {
333333
logMessage = append(logMessage, grafanaFields...)
@@ -351,6 +351,9 @@ func (f *Handler) reportQueryStats(r *http.Request, userID string, queryString u
351351
} else {
352352
logMessage = append(logMessage, "error", s.Message())
353353
}
354+
}
355+
logMessage = append(logMessage, formatQueryString(queryString)...)
356+
if error != nil {
354357
level.Error(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
355358
} else {
356359
level.Info(util_log.WithContext(r.Context(), f.log)).Log(logMessage...)
@@ -404,9 +407,18 @@ func (f *Handler) parseRequestQueryString(r *http.Request, bodyBuf bytes.Buffer)
404407
}
405408

406409
func formatQueryString(queryString url.Values) (fields []interface{}) {
410+
var queryFields []string
407411
for k, v := range queryString {
412+
// If `query` or `match[]` field exists, we always put it as the last field.
413+
if k == "query" || k == "match[]" {
414+
queryFields = []string{fmt.Sprintf("param_%s", k), strings.Join(v, ",")}
415+
continue
416+
}
408417
fields = append(fields, fmt.Sprintf("param_%s", k), strings.Join(v, ","))
409418
}
419+
if len(queryFields) > 0 {
420+
fields = append(fields, queryFields)
421+
}
410422
return fields
411423
}
412424

0 commit comments

Comments
 (0)