From 6e5b2c7d563e5187bfd611d29f2fbe34bed5b08c Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Wed, 8 Jan 2025 11:59:54 +0200 Subject: [PATCH] add metric to count responses per endpoint --- .../opentelemetry/instrumentation/wsgi/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py b/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py index bd3b2d18db..2d7a48db2b 100644 --- a/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-wsgi/src/opentelemetry/instrumentation/wsgi/__init__.py @@ -583,6 +583,11 @@ def __init__( unit="{request}", description="Number of active HTTP server requests.", ) + self.response_counter = self.meter.create_counter( + name="wsgi_response_count", + unit="responses", + description="Counter for responses per endpoint", + ) self.request_hook = request_hook self.response_hook = response_hook self._sem_conv_opt_in_mode = sem_conv_opt_in_mode @@ -594,9 +599,12 @@ def _create_start_response( response_hook, duration_attrs, sem_conv_opt_in_mode, + response_counter, + endpoint_name ): @functools.wraps(start_response) def _start_response(status, response_headers, *args, **kwargs): + response_counter.add(1, {"status_code": status, "view": endpoint_name}) add_response_attributes( span, status, @@ -658,12 +666,15 @@ def __call__(self, environ, start_response): self.active_requests_counter.add(1, active_requests_count_attrs) try: with trace.use_span(span): + endpoint_name = environ.get("PATH_INFO") start_response = self._create_start_response( span, start_response, response_hook, req_attrs, self._sem_conv_opt_in_mode, + self.response_counter, + endpoint_name ) iterable = self.wsgi(environ, start_response) return _end_span_after_iterating(iterable, span, token)