@@ -216,15 +216,22 @@ def _method(self, request):
216
216
return "<invalid method>"
217
217
return m
218
218
219
+ def label_metric (self , metric , request , response = None , ** labels ):
220
+ return metric .labels (** labels ) if labels else metric
221
+
219
222
def process_request (self , request ):
220
223
transport = self ._transport (request )
221
224
method = self ._method (request )
222
- self .metrics .requests_by_method .labels (method = method ).inc ()
223
- self .metrics .requests_by_transport .labels (transport = transport ).inc ()
225
+ self .label_metric (self .metrics .requests_by_method , request , method = method ).inc ()
226
+ self .label_metric (
227
+ self .metrics .requests_by_transport , request , transport = transport
228
+ ).inc ()
224
229
if request .is_ajax ():
225
- self .metrics .requests_ajax .inc ()
230
+ self .label_metric ( self . metrics .requests_ajax , request ) .inc ()
226
231
content_length = int (request .META .get ("CONTENT_LENGTH" ) or 0 )
227
- self .metrics .requests_body_bytes .observe (content_length )
232
+ self .label_metric (self .metrics .requests_body_bytes , request ).observe (
233
+ content_length
234
+ )
228
235
request .prometheus_after_middleware_event = Time ()
229
236
230
237
def _get_view_name (self , request ):
@@ -240,49 +247,79 @@ def process_view(self, request, view_func, *view_args, **view_kwargs):
240
247
method = self ._method (request )
241
248
if hasattr (request , "resolver_match" ):
242
249
name = request .resolver_match .view_name or "<unnamed view>"
243
- self .metrics .requests_by_view_transport_method .labels (
244
- view = name , transport = transport , method = method
250
+ self .label_metric (
251
+ self .metrics .requests_by_view_transport_method ,
252
+ request ,
253
+ view = name ,
254
+ transport = transport ,
255
+ method = method ,
245
256
).inc ()
246
257
247
258
def process_template_response (self , request , response ):
248
259
if hasattr (response , "template_name" ):
249
- self .metrics .responses_by_templatename .labels (
250
- templatename = str (response .template_name )
260
+ self .label_metric (
261
+ self .metrics .responses_by_templatename ,
262
+ request ,
263
+ response = response ,
264
+ templatename = str (response .template_name ),
251
265
).inc ()
252
266
return response
253
267
254
268
def process_response (self , request , response ):
255
269
method = self ._method (request )
256
270
name = self ._get_view_name (request )
257
271
status = str (response .status_code )
258
- self .metrics .responses_by_status .labels (status = status ).inc ()
259
- self .metrics .responses_by_status_view_method .labels (
260
- status = status , view = name , method = method
272
+ self .label_metric (
273
+ self .metrics .responses_by_status , request , response , status = status
274
+ ).inc ()
275
+ self .label_metric (
276
+ self .metrics .responses_by_status_view_method ,
277
+ request ,
278
+ response ,
279
+ status = status ,
280
+ view = name ,
281
+ method = method ,
261
282
).inc ()
262
283
if hasattr (response , "charset" ):
263
- self .metrics .responses_by_charset .labels (
264
- charset = str (response .charset )
284
+ self .label_metric (
285
+ self .metrics .responses_by_charset ,
286
+ request ,
287
+ response ,
288
+ charset = str (response .charset ),
265
289
).inc ()
266
290
if hasattr (response , "streaming" ) and response .streaming :
267
- self .metrics .responses_streaming .inc ()
291
+ self .label_metric ( self . metrics .responses_streaming , request , response ) .inc ()
268
292
if hasattr (response , "content" ):
269
- self .metrics .responses_body_bytes .observe (len (response .content ))
293
+ self .label_metric (
294
+ self .metrics .responses_body_bytes , request , response
295
+ ).observe (len (response .content ))
270
296
if hasattr (request , "prometheus_after_middleware_event" ):
271
- self .metrics .requests_latency_by_view_method .labels (
272
- view = self ._get_view_name (request ), method = request .method
297
+ self .label_metric (
298
+ self .metrics .requests_latency_by_view_method ,
299
+ request ,
300
+ response ,
301
+ view = self ._get_view_name (request ),
302
+ method = request .method ,
273
303
).observe (TimeSince (request .prometheus_after_middleware_event ))
274
304
else :
275
- self .metrics .requests_unknown_latency .inc ()
305
+ self .label_metric (
306
+ self .metrics .requests_unknown_latency , request , response
307
+ ).inc ()
276
308
return response
277
309
278
310
def process_exception (self , request , exception ):
279
- self .metrics .exceptions_by_type .labels (type = type (exception ).__name__ ).inc ()
311
+ self .label_metric (
312
+ self .metrics .exceptions_by_type , request , type = type (exception ).__name__
313
+ ).inc ()
280
314
if hasattr (request , "resolver_match" ):
281
315
name = request .resolver_match .view_name or "<unnamed view>"
282
- self .metrics .exceptions_by_view . labels ( view = name ).inc ()
316
+ self .label_metric ( self . metrics .exceptions_by_view , request , view = name ).inc ()
283
317
if hasattr (request , "prometheus_after_middleware_event" ):
284
- self .metrics .requests_latency_by_view_method .labels (
285
- view = self ._get_view_name (request ), method = request .method
318
+ self .label_metric (
319
+ self .metrics .requests_latency_by_view_method ,
320
+ request ,
321
+ view = self ._get_view_name (request ),
322
+ method = request .method ,
286
323
).observe (TimeSince (request .prometheus_after_middleware_event ))
287
324
else :
288
- self .metrics .requests_unknown_latency .inc ()
325
+ self .label_metric ( self . metrics .requests_unknown_latency , request ) .inc ()
0 commit comments