Skip to content

Commit 4fde1a0

Browse files
authored
Merge pull request #185 from asherf/md
move registration method to Metrics so it can be overriden.
2 parents 8469330 + 3c2dc55 commit 4fde1a0

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

django_prometheus/middleware.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@
2525
)
2626

2727

28-
def _register_metric(cls, name, documentation, labelnames=tuple(), **kwargs):
29-
return cls(name, documentation, labelnames=labelnames, **kwargs)
30-
31-
3228
class Metrics:
3329
_instance = None
3430

@@ -38,37 +34,42 @@ def get_instance(cls):
3834
cls._instance = cls()
3935
return cls._instance
4036

37+
def register_metric(
38+
self, metric_cls, name, documentation, labelnames=tuple(), **kwargs
39+
):
40+
return metric_cls(name, documentation, labelnames=labelnames, **kwargs)
41+
4142
def __init__(self, *args, **kwargs):
4243
self.register()
4344

4445
def register(self):
45-
self.requests_total = _register_metric(
46+
self.requests_total = self.register_metric(
4647
Counter,
4748
"django_http_requests_before_middlewares_total",
4849
"Total count of requests before middlewares run.",
4950
)
50-
self.responses_total = _register_metric(
51+
self.responses_total = self.register_metric(
5152
Counter,
5253
"django_http_responses_before_middlewares_total",
5354
"Total count of responses before middlewares run.",
5455
)
55-
self.requests_latency_before = _register_metric(
56+
self.requests_latency_before = self.register_metric(
5657
Histogram,
5758
"django_http_requests_latency_including_middlewares_seconds",
5859
(
5960
"Histogram of requests processing time (including middleware "
6061
"processing time)."
6162
),
6263
)
63-
self.requests_unknown_latency_before = _register_metric(
64+
self.requests_unknown_latency_before = self.register_metric(
6465
Counter,
6566
"django_http_requests_unknown_latency_including_middlewares_total",
6667
(
6768
"Count of requests for which the latency was unknown (when computing "
6869
"django_http_requests_latency_including_middlewares_seconds)."
6970
),
7071
)
71-
self.requests_latency_by_view_method = _register_metric(
72+
self.requests_latency_by_view_method = self.register_metric(
7273
Histogram,
7374
"django_http_requests_latency_seconds_by_view_method",
7475
"Histogram of request processing time labelled by view.",
@@ -77,85 +78,85 @@ def register(self):
7778
settings, "PROMETHEUS_LATENCY_BUCKETS", DEFAULT_LATENCY_BUCKETS
7879
),
7980
)
80-
self.requests_unknown_latency = _register_metric(
81+
self.requests_unknown_latency = self.register_metric(
8182
Counter,
8283
"django_http_requests_unknown_latency_total",
8384
"Count of requests for which the latency was unknown.",
8485
)
8586
# Set in process_request
86-
self.requests_ajax = _register_metric(
87+
self.requests_ajax = self.register_metric(
8788
Counter, "django_http_ajax_requests_total", "Count of AJAX requests."
8889
)
89-
self.requests_by_method = _register_metric(
90+
self.requests_by_method = self.register_metric(
9091
Counter,
9192
"django_http_requests_total_by_method",
9293
"Count of requests by method.",
9394
["method"],
9495
)
95-
self.requests_by_transport = _register_metric(
96+
self.requests_by_transport = self.register_metric(
9697
Counter,
9798
"django_http_requests_total_by_transport",
9899
"Count of requests by transport.",
99100
["transport"],
100101
)
101102
# Set in process_view
102-
self.requests_by_view_transport_method = _register_metric(
103+
self.requests_by_view_transport_method = self.register_metric(
103104
Counter,
104105
"django_http_requests_total_by_view_transport_method",
105106
"Count of requests by view, transport, method.",
106107
["view", "transport", "method"],
107108
)
108-
self.requests_body_bytes = _register_metric(
109+
self.requests_body_bytes = self.register_metric(
109110
Histogram,
110111
"django_http_requests_body_total_bytes",
111112
"Histogram of requests by body size.",
112113
buckets=PowersOf(2, 30),
113114
)
114115
# Set in process_template_response
115-
self.responses_by_templatename = _register_metric(
116+
self.responses_by_templatename = self.register_metric(
116117
Counter,
117118
"django_http_responses_total_by_templatename",
118119
"Count of responses by template name.",
119120
["templatename"],
120121
)
121122
# Set in process_response
122-
self.responses_by_status = _register_metric(
123+
self.responses_by_status = self.register_metric(
123124
Counter,
124125
"django_http_responses_total_by_status",
125126
"Count of responses by status.",
126127
["status"],
127128
)
128-
self.responses_by_status_view_method = _register_metric(
129+
self.responses_by_status_view_method = self.register_metric(
129130
Counter,
130131
"django_http_responses_total_by_status_view_method",
131132
"Count of responses by status, view, method.",
132133
["status", "view", "method"],
133134
)
134-
self.responses_body_bytes = _register_metric(
135+
self.responses_body_bytes = self.register_metric(
135136
Histogram,
136137
"django_http_responses_body_total_bytes",
137138
"Histogram of responses by body size.",
138139
buckets=PowersOf(2, 30),
139140
)
140-
self.responses_by_charset = _register_metric(
141+
self.responses_by_charset = self.register_metric(
141142
Counter,
142143
"django_http_responses_total_by_charset",
143144
"Count of responses by charset.",
144145
["charset"],
145146
)
146-
self.responses_streaming = _register_metric(
147+
self.responses_streaming = self.register_metric(
147148
Counter,
148149
"django_http_responses_streaming_total",
149150
"Count of streaming responses.",
150151
)
151152
# Set in process_exception
152-
self.exceptions_by_type = _register_metric(
153+
self.exceptions_by_type = self.register_metric(
153154
Counter,
154155
"django_http_exceptions_total_by_type",
155156
"Count of exceptions by object type.",
156157
["type"],
157158
)
158-
self.exceptions_by_view = _register_metric(
159+
self.exceptions_by_view = self.register_metric(
159160
Counter,
160161
"django_http_exceptions_total_by_view",
161162
"Count of exceptions by view.",

0 commit comments

Comments
 (0)