Merge ~alexsander-souza/maas:lp1996204_to_3_3 into maas:3.3

Proposed by Alexsander de Souza
Status: Merged
Approved by: Alexsander de Souza
Approved revision: 6c07f5b9dc9e4b78efc1adffbfb2f46aa5b82605
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~alexsander-souza/maas:lp1996204_to_3_3
Merge into: maas:3.3
Diff against target: 37 lines (+12/-3)
1 file modified
src/maasserver/prometheus/middleware.py (+12/-3)
Reviewer Review Type Date Requested Status
Alexsander de Souza Approve
MAAS Lander Approve
Review via email: mp+455395@code.launchpad.net

Commit message

normalize request path used as prometheus label

using the original requested path effectively tracks metrics per database object, not per endpoint as intended. Additionally it leads to huge number of histograms in the prometheus database, exceeding the 2GB limit after some time.

fixes LP#1996204

(cherry picked from commit 60a5e0ca08c25a238af04ee1dd4de9876acfbdc6)

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b lp1996204_to_3_3 lp:~alexsander-souza/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/3980/console
COMMIT: 6c07f5b9dc9e4b78efc1adffbfb2f46aa5b82605

review: Needs Fixing
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b lp1996204_to_3_3 lp:~alexsander-souza/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/3981/console
COMMIT: 6c07f5b9dc9e4b78efc1adffbfb2f46aa5b82605

review: Needs Fixing
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b lp1996204_to_3_3 lp:~alexsander-souza/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 6c07f5b9dc9e4b78efc1adffbfb2f46aa5b82605

review: Approve
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

self-approve backport

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/prometheus/middleware.py b/src/maasserver/prometheus/middleware.py
2index 02b4867..94cc270 100644
3--- a/src/maasserver/prometheus/middleware.py
4+++ b/src/maasserver/prometheus/middleware.py
5@@ -6,6 +6,7 @@ from time import time
6
7 from django.db import connections
8 from django.db.backends.utils import CursorWrapper
9+from django.urls import resolve, reverse
10
11 from provisioningserver.prometheus.metrics import PROMETHEUS_METRICS
12
13@@ -56,13 +57,21 @@ class PrometheusRequestMetricsMiddleware:
14 return response
15
16 def _process_metrics(self, request, response, latency, query_latencies):
17- op = request.POST.get("op", request.GET.get("op", ""))
18 labels = {
19 "method": request.method,
20- "path": request.path,
21 "status": response.status_code,
22- "op": op,
23+ "op": request.POST.get("op", request.GET.get("op", "")),
24+ "path": request.path,
25 }
26+ try:
27+ match = resolve(request.path.removeprefix("/MAAS"))
28+ args = [f":arg{i}" for i in range(len(match.args))]
29+ kwargs = {k: f":{k}" for k in match.kwargs.keys()}
30+ labels["path"] = reverse(match.url_name, None, args, kwargs)
31+ except Exception:
32+ # use the request path as-is
33+ pass
34+
35 self.prometheus_metrics.update(
36 "maas_http_request_latency",
37 "observe",

Subscribers

People subscribed via source and target branches