diff --git a/docs/getting_started/tests/test_flask.py b/docs/getting_started/tests/test_flask.py index 4c409edbacd..fdd5cb330ab 100644 --- a/docs/getting_started/tests/test_flask.py +++ b/docs/getting_started/tests/test_flask.py @@ -45,4 +45,4 @@ def test_flask(self): output = str(server.stdout.read()) self.assertIn('"name": "HTTP GET"', output) self.assertIn('"name": "example-request"', output) - self.assertIn('"name": "hello"', output) + self.assertIn('"name": "/"', output) diff --git a/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md b/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md index bd6ea89cb21..c030e9e8c08 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md +++ b/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- Use `url.rule` instead of `request.endpoint` for span name + ([#1260](https://github.com/open-telemetry/opentelemetry-python/pull/1260)) - Record span status and http.status_code attribute on exception ([#1257](https://github.com/open-telemetry/opentelemetry-python/pull/1257)) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index 90082dd850e..c88a7609059 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -110,9 +110,13 @@ def _before_request(): return environ = flask.request.environ - span_name = flask.request.endpoint or otel_wsgi.get_default_span_name( - environ - ) + span_name = None + try: + span_name = flask.request.url_rule.rule + except AttributeError: + pass + if span_name is None: + span_name = otel_wsgi.get_default_span_name(environ) token = context.attach( propagators.extract(otel_wsgi.get_header_from_environ, environ) ) diff --git a/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py b/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py index 46861bd6812..a907890523c 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py +++ b/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py @@ -102,7 +102,7 @@ def test_simple(self): span_list = self.memory_exporter.get_finished_spans() self.assertEqual(len(span_list), 1) - self.assertEqual(span_list[0].name, "_hello_endpoint") + self.assertEqual(span_list[0].name, "/hello/") self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER) self.assertEqual(span_list[0].attributes, expected_attrs) @@ -154,7 +154,7 @@ def test_internal_error(self): resp.close() span_list = self.memory_exporter.get_finished_spans() self.assertEqual(len(span_list), 1) - self.assertEqual(span_list[0].name, "_hello_endpoint") + self.assertEqual(span_list[0].name, "/hello/") self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER) self.assertEqual(span_list[0].attributes, expected_attrs)