From ed743ef55263b0278caaae35b18670293a74818e Mon Sep 17 00:00:00 2001 From: JohnW Date: Mon, 11 Aug 2025 15:06:45 -0300 Subject: [PATCH 1/2] add two more default metrics --- django_prometheus/middleware.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/django_prometheus/middleware.py b/django_prometheus/middleware.py index 8c6f88d6..6d6e7fff 100644 --- a/django_prometheus/middleware.py +++ b/django_prometheus/middleware.py @@ -1,5 +1,5 @@ from django.utils.deprecation import MiddlewareMixin -from prometheus_client import Counter, Histogram +from prometheus_client import Counter, Histogram, Gauge from django_prometheus.conf import NAMESPACE, PROMETHEUS_LATENCY_BUCKETS from django_prometheus.utils import PowersOf, Time, TimeSince @@ -21,6 +21,19 @@ def __init__(self, *args, **kwargs): self.register() def register(self): + self.inflight_requests = self.register_metric( + Gauge, + "django_http_inflight_requests", + "Current number of inflight requests.", + namespace=NAMESPACE, + ) + self.requests_total_by_view = self.register_metric( + Counter, + "django_http_requests_total_by_view", + "Total count of requests by view.", + ["view"], + namespace=NAMESPACE, + ) self.requests_total = self.register_metric( Counter, "django_http_requests_before_middlewares_total", @@ -217,6 +230,7 @@ def process_request(self, request): method = self._method(request) self.label_metric(self.metrics.requests_by_method, request, method=method).inc() self.label_metric(self.metrics.requests_by_transport, request, transport=transport).inc() + self.label_metric(self.metrics.inflight_requests, request).inc() # Mimic the behaviour of the deprecated "Request.is_ajax()" method. if request.headers.get("x-requested-with") == "XMLHttpRequest": @@ -261,6 +275,8 @@ def process_response(self, request, response): method = self._method(request) name = self._get_view_name(request) status = str(response.status_code) + self.label_metric(self.metrics.inflight_requests, request).dec() + self.label_metric(self.metrics.requests_total_by_view, request, view=name).inc() self.label_metric(self.metrics.responses_by_status, request, response, status=status).inc() self.label_metric( self.metrics.responses_by_status_view_method, From 477552ab2e5d0e83d065ac07434b0d06e1953f2d Mon Sep 17 00:00:00 2001 From: JohnW Date: Tue, 12 Aug 2025 07:36:33 -0300 Subject: [PATCH 2/2] remove dupe metric --- django_prometheus/middleware.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/django_prometheus/middleware.py b/django_prometheus/middleware.py index 6d6e7fff..50f1257c 100644 --- a/django_prometheus/middleware.py +++ b/django_prometheus/middleware.py @@ -27,13 +27,6 @@ def register(self): "Current number of inflight requests.", namespace=NAMESPACE, ) - self.requests_total_by_view = self.register_metric( - Counter, - "django_http_requests_total_by_view", - "Total count of requests by view.", - ["view"], - namespace=NAMESPACE, - ) self.requests_total = self.register_metric( Counter, "django_http_requests_before_middlewares_total", @@ -276,7 +269,6 @@ def process_response(self, request, response): name = self._get_view_name(request) status = str(response.status_code) self.label_metric(self.metrics.inflight_requests, request).dec() - self.label_metric(self.metrics.requests_total_by_view, request, view=name).inc() self.label_metric(self.metrics.responses_by_status, request, response, status=status).inc() self.label_metric( self.metrics.responses_by_status_view_method,