diff --git a/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md b/instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md index bd6ea89cb..c030e9e8c 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 90082dd85..c88a76090 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 46861bd68..a90789052 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py +++ b/instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py @@ -102,7 +102,7 @@ class TestProgrammatic(InstrumentationTest, TestBase, WsgiTestBase): 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 @@ class TestProgrammatic(InstrumentationTest, TestBase, WsgiTestBase): 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)