asyncpg: Use only the first word from query as a span name (#1324)

This commit is contained in:
krnr
2022-09-30 15:54:31 +05:00
committed by GitHub
parent 8e0c8d954b
commit f349e380a2
3 changed files with 13 additions and 3 deletions

View File

@ -15,6 +15,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `opentelemetry-instrumentation-asyncpg` Fix high cardinality in the span name
([#1324](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1324))
### Added ### Added
- `opentelemetry-instrumentation-grpc` add supports to filter requests to instrument. ([#1241](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1241)) - `opentelemetry-instrumentation-grpc` add supports to filter requests to instrument. ([#1241](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1241))
@ -42,7 +45,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#1208](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1208)) ([#1208](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1208))
- `opentelemetry-instrumentation-aiohttp-client` Fix producing additional spans with each newly created ClientSession - `opentelemetry-instrumentation-aiohttp-client` Fix producing additional spans with each newly created ClientSession
- ([#1246](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1246)) - ([#1246](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1246))
- Add _is_openetlemetry_instrumented check in _InstrumentedFastAPI class - Add _is_opentelemetry_instrumented check in _InstrumentedFastAPI class
([#1313](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1313)) ([#1313](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1313))
- Fix uninstrumentation of existing app instances in FastAPI - Fix uninstrumentation of existing app instances in FastAPI
([#1258](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1258)) ([#1258](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1258))

View File

@ -134,6 +134,11 @@ class AsyncPGInstrumentor(BaseInstrumentor):
params = getattr(instance, "_params", {}) params = getattr(instance, "_params", {})
name = args[0] if args[0] else params.get("database", "postgresql") name = args[0] if args[0] else params.get("database", "postgresql")
try:
name = name.split()[0]
except IndexError:
name = ""
with self._tracer.start_as_current_span( with self._tracer.start_as_current_span(
name, kind=SpanKind.CLIENT name, kind=SpanKind.CLIENT
) as span: ) as span:

View File

@ -62,7 +62,7 @@ class TestFunctionalAsyncPG(TestBase):
self.assertEqual(len(spans), 1) self.assertEqual(len(spans), 1)
self.assertIs(StatusCode.UNSET, spans[0].status.status_code) self.assertIs(StatusCode.UNSET, spans[0].status.status_code)
self.check_span(spans[0]) self.check_span(spans[0])
self.assertEqual(spans[0].name, "SELECT 42;") self.assertEqual(spans[0].name, "SELECT")
self.assertEqual( self.assertEqual(
spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT 42;" spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT 42;"
) )
@ -72,6 +72,7 @@ class TestFunctionalAsyncPG(TestBase):
spans = self.memory_exporter.get_finished_spans() spans = self.memory_exporter.get_finished_spans()
self.assertEqual(len(spans), 1) self.assertEqual(len(spans), 1)
self.check_span(spans[0]) self.check_span(spans[0])
self.assertEqual(spans[0].name, "SELECT")
self.assertEqual( self.assertEqual(
spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT 42;" spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT 42;"
) )
@ -189,7 +190,7 @@ class TestFunctionalAsyncPG_CaptureParameters(TestBase):
self.assertIs(StatusCode.UNSET, spans[0].status.status_code) self.assertIs(StatusCode.UNSET, spans[0].status.status_code)
self.check_span(spans[0]) self.check_span(spans[0])
self.assertEqual(spans[0].name, "SELECT $1;") self.assertEqual(spans[0].name, "SELECT")
self.assertEqual( self.assertEqual(
spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT $1;" spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT $1;"
) )
@ -203,6 +204,7 @@ class TestFunctionalAsyncPG_CaptureParameters(TestBase):
self.assertEqual(len(spans), 1) self.assertEqual(len(spans), 1)
self.check_span(spans[0]) self.check_span(spans[0])
self.assertEqual(spans[0].name, "SELECT")
self.assertEqual( self.assertEqual(
spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT $1;" spans[0].attributes[SpanAttributes.DB_STATEMENT], "SELECT $1;"
) )