@@ -20,6 +20,7 @@ import (
20
20
"github.com/prometheus/client_golang/prometheus/promauto"
21
21
"github.com/weaveworks/common/httpgrpc"
22
22
"github.com/weaveworks/common/httpgrpc/server"
23
+ "google.golang.org/grpc/status"
23
24
24
25
querier_stats "github.com/cortexproject/cortex/pkg/querier/stats"
25
26
"github.com/cortexproject/cortex/pkg/tenant"
@@ -136,6 +137,19 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
136
137
resp , err := f .roundTripper .RoundTrip (r )
137
138
queryResponseTime := time .Since (startTime )
138
139
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
+
139
153
if err != nil {
140
154
writeError (w , err )
141
155
return
@@ -156,19 +170,6 @@ func (f *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
156
170
if err != nil && ! errors .Is (err , syscall .EPIPE ) {
157
171
level .Error (util_log .WithContext (r .Context (), f .log )).Log ("msg" , "write response body error" , "bytesCopied" , bytesCopied , "err" , err )
158
172
}
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
- }
172
173
}
173
174
174
175
// reportSlowQuery reports slow queries.
@@ -184,7 +185,7 @@ func (f *Handler) reportSlowQuery(r *http.Request, queryString url.Values, query
184
185
level .Info (util_log .WithContext (r .Context (), f .log )).Log (logMessage ... )
185
186
}
186
187
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 ) {
188
189
tenantIDs , err := tenant .TenantIDs (r .Context ())
189
190
if err != nil {
190
191
return
@@ -215,7 +216,17 @@ func (f *Handler) reportQueryStats(r *http.Request, queryString url.Values, quer
215
216
"fetched_data_bytes" , numDataBytes ,
216
217
}, formatQueryString (queryString )... )
217
218
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
+ }
219
230
}
220
231
221
232
func (f * Handler ) parseRequestQueryString (r * http.Request , bodyBuf bytes.Buffer ) url.Values {
0 commit comments