From 4d90332e25aa7672c124c0e02b56155999d85725 Mon Sep 17 00:00:00 2001 From: Tamara Dancheva Date: Thu, 15 May 2025 11:15:57 -0700 Subject: [PATCH 1/3] Replace span in asyncpg --- .../instrumentation/asyncpg/__init__.py | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py index bcdb7ece45..a10e1ce138 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py @@ -60,20 +60,25 @@ async def main(): from opentelemetry.instrumentation.asyncpg.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.utils import unwrap -from opentelemetry.semconv.trace import ( - DbSystemValues, - NetTransportValues, - SpanAttributes, +from opentelemetry.semconv._incubating.attributes.db_attributes import ( + DB_NAME, + DB_STATEMENT, + DB_USER, ) +from opentelemetry.semconv._incubating.attributes.net_attributes import ( + NET_PEER_NAME, + NET_PEER_PORT, + NET_TRANSPORT, +) +from opentelemetry.semconv.attributes.db_attributes import DB_SYSTEM_NAME +from opentelemetry.semconv.trace import DbSystemValues, NetTransportValues from opentelemetry.trace import SpanKind from opentelemetry.trace.status import Status, StatusCode def _hydrate_span_from_args(connection, query, parameters) -> dict: """Get network and database attributes from connection.""" - span_attributes = { - SpanAttributes.DB_SYSTEM: DbSystemValues.POSTGRESQL.value - } + span_attributes = {DB_SYSTEM_NAME: DbSystemValues.POSTGRESQL.value} # connection contains _params attribute which is a namedtuple ConnectionParameters. # https://github.com/MagicStack/asyncpg/blob/master/asyncpg/connection.py#L68 @@ -81,28 +86,24 @@ def _hydrate_span_from_args(connection, query, parameters) -> dict: params = getattr(connection, "_params", None) dbname = getattr(params, "database", None) if dbname: - span_attributes[SpanAttributes.DB_NAME] = dbname + span_attributes[DB_NAME] = dbname user = getattr(params, "user", None) if user: - span_attributes[SpanAttributes.DB_USER] = user + span_attributes[DB_USER] = user # connection contains _addr attribute which is either a host/port tuple, or unix socket string # https://magicstack.github.io/asyncpg/current/_modules/asyncpg/connection.html addr = getattr(connection, "_addr", None) if isinstance(addr, tuple): - span_attributes[SpanAttributes.NET_PEER_NAME] = addr[0] - span_attributes[SpanAttributes.NET_PEER_PORT] = addr[1] - span_attributes[SpanAttributes.NET_TRANSPORT] = ( - NetTransportValues.IP_TCP.value - ) + span_attributes[NET_PEER_NAME] = addr[0] + span_attributes[NET_PEER_PORT] = addr[1] + span_attributes[NET_TRANSPORT] = NetTransportValues.IP_TCP.value elif isinstance(addr, str): - span_attributes[SpanAttributes.NET_PEER_NAME] = addr - span_attributes[SpanAttributes.NET_TRANSPORT] = ( - NetTransportValues.OTHER.value - ) + span_attributes[NET_PEER_NAME] = addr + span_attributes[NET_TRANSPORT] = NetTransportValues.OTHER.value if query is not None: - span_attributes[SpanAttributes.DB_STATEMENT] = query + span_attributes[DB_STATEMENT] = query if parameters is not None and len(parameters) > 0: span_attributes["db.statement.parameters"] = str(parameters) From 3355c72189487973f2712d36653eb096a121cce6 Mon Sep 17 00:00:00 2001 From: Tamara Dancheva <122360116+tdancheva@users.noreply.github.com> Date: Thu, 15 May 2025 11:35:05 -0700 Subject: [PATCH 2/3] Update instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py Co-authored-by: Riccardo Magliocchetti --- .../src/opentelemetry/instrumentation/asyncpg/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py index a10e1ce138..8aeea4986f 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py @@ -78,7 +78,7 @@ async def main(): def _hydrate_span_from_args(connection, query, parameters) -> dict: """Get network and database attributes from connection.""" - span_attributes = {DB_SYSTEM_NAME: DbSystemValues.POSTGRESQL.value} + span_attributes = {DB_SYSTEM: DbSystemValues.POSTGRESQL.value} # connection contains _params attribute which is a namedtuple ConnectionParameters. # https://github.com/MagicStack/asyncpg/blob/master/asyncpg/connection.py#L68 From 1774cd42a24f2c2f68c2f0da9483b8cbba2182fe Mon Sep 17 00:00:00 2001 From: Tamara Dancheva Date: Thu, 15 May 2025 11:41:56 -0700 Subject: [PATCH 3/3] refactor --- .../src/opentelemetry/instrumentation/asyncpg/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py index 8aeea4986f..daba570d6e 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py @@ -63,15 +63,16 @@ async def main(): from opentelemetry.semconv._incubating.attributes.db_attributes import ( DB_NAME, DB_STATEMENT, + DB_SYSTEM, DB_USER, + DbSystemValues, ) from opentelemetry.semconv._incubating.attributes.net_attributes import ( NET_PEER_NAME, NET_PEER_PORT, NET_TRANSPORT, + NetTransportValues, ) -from opentelemetry.semconv.attributes.db_attributes import DB_SYSTEM_NAME -from opentelemetry.semconv.trace import DbSystemValues, NetTransportValues from opentelemetry.trace import SpanKind from opentelemetry.trace.status import Status, StatusCode