From ccdf5226267f1fc63cb66d3844ef358952a0c3d2 Mon Sep 17 00:00:00 2001 From: Tamara Dancheva <122360116+tdancheva@users.noreply.github.com> Date: Thu, 15 May 2025 12:07:54 -0700 Subject: [PATCH] Refactor asyncpg : replace uses of SpanAttributes with opentelemetry.semconv.attributes (#3505) * Replace span in asyncpg * Update instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py Co-authored-by: Riccardo Magliocchetti * refactor --------- Co-authored-by: Riccardo Magliocchetti --- .../instrumentation/asyncpg/__init__.py | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 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 bcdb7ece4..daba570d6 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-asyncpg/src/opentelemetry/instrumentation/asyncpg/__init__.py @@ -60,10 +60,18 @@ from opentelemetry.instrumentation.asyncpg.package import _instruments from opentelemetry.instrumentation.asyncpg.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.utils import unwrap -from opentelemetry.semconv.trace import ( +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, - SpanAttributes, ) from opentelemetry.trace import SpanKind from opentelemetry.trace.status import Status, StatusCode @@ -71,9 +79,7 @@ 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: 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 +87,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)