1
1
from django .utils .deprecation import MiddlewareMixin
2
- from prometheus_client import Counter , Histogram
2
+ from prometheus_client import Counter , Histogram , Gauge
3
3
4
4
from django_prometheus .conf import NAMESPACE , PROMETHEUS_LATENCY_BUCKETS
5
5
from django_prometheus .utils import PowersOf , Time , TimeSince
@@ -21,6 +21,19 @@ def __init__(self, *args, **kwargs):
21
21
self .register ()
22
22
23
23
def register (self ):
24
+ self .inflight_requests = self .register_metric (
25
+ Gauge ,
26
+ "django_http_inflight_requests" ,
27
+ "Current number of inflight requests." ,
28
+ namespace = NAMESPACE ,
29
+ )
30
+ self .requests_total_by_view = self .register_metric (
31
+ Counter ,
32
+ "django_http_requests_total_by_view" ,
33
+ "Total count of requests by view." ,
34
+ ["view" ],
35
+ namespace = NAMESPACE ,
36
+ )
24
37
self .requests_total = self .register_metric (
25
38
Counter ,
26
39
"django_http_requests_before_middlewares_total" ,
@@ -217,6 +230,7 @@ def process_request(self, request):
217
230
method = self ._method (request )
218
231
self .label_metric (self .metrics .requests_by_method , request , method = method ).inc ()
219
232
self .label_metric (self .metrics .requests_by_transport , request , transport = transport ).inc ()
233
+ self .label_metric (self .metrics .inflight_requests , request ).inc ()
220
234
221
235
# Mimic the behaviour of the deprecated "Request.is_ajax()" method.
222
236
if request .headers .get ("x-requested-with" ) == "XMLHttpRequest" :
@@ -261,6 +275,8 @@ def process_response(self, request, response):
261
275
method = self ._method (request )
262
276
name = self ._get_view_name (request )
263
277
status = str (response .status_code )
278
+ self .label_metric (self .metrics .inflight_requests , request ).dec ()
279
+ self .label_metric (self .metrics .requests_total_by_view , request , view = name ).inc ()
264
280
self .label_metric (self .metrics .responses_by_status , request , response , status = status ).inc ()
265
281
self .label_metric (
266
282
self .metrics .responses_by_status_view_method ,
0 commit comments