mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 22:23:12 +08:00
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 <riccardo.magliocchetti@gmail.com> * refactor --------- Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
This commit is contained in:
@ -60,10 +60,18 @@ from opentelemetry.instrumentation.asyncpg.package import _instruments
|
|||||||
from opentelemetry.instrumentation.asyncpg.version import __version__
|
from opentelemetry.instrumentation.asyncpg.version import __version__
|
||||||
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
||||||
from opentelemetry.instrumentation.utils import unwrap
|
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,
|
DbSystemValues,
|
||||||
|
)
|
||||||
|
from opentelemetry.semconv._incubating.attributes.net_attributes import (
|
||||||
|
NET_PEER_NAME,
|
||||||
|
NET_PEER_PORT,
|
||||||
|
NET_TRANSPORT,
|
||||||
NetTransportValues,
|
NetTransportValues,
|
||||||
SpanAttributes,
|
|
||||||
)
|
)
|
||||||
from opentelemetry.trace import SpanKind
|
from opentelemetry.trace import SpanKind
|
||||||
from opentelemetry.trace.status import Status, StatusCode
|
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:
|
def _hydrate_span_from_args(connection, query, parameters) -> dict:
|
||||||
"""Get network and database attributes from connection."""
|
"""Get network and database attributes from connection."""
|
||||||
span_attributes = {
|
span_attributes = {DB_SYSTEM: DbSystemValues.POSTGRESQL.value}
|
||||||
SpanAttributes.DB_SYSTEM: DbSystemValues.POSTGRESQL.value
|
|
||||||
}
|
|
||||||
|
|
||||||
# connection contains _params attribute which is a namedtuple ConnectionParameters.
|
# connection contains _params attribute which is a namedtuple ConnectionParameters.
|
||||||
# https://github.com/MagicStack/asyncpg/blob/master/asyncpg/connection.py#L68
|
# 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)
|
params = getattr(connection, "_params", None)
|
||||||
dbname = getattr(params, "database", None)
|
dbname = getattr(params, "database", None)
|
||||||
if dbname:
|
if dbname:
|
||||||
span_attributes[SpanAttributes.DB_NAME] = dbname
|
span_attributes[DB_NAME] = dbname
|
||||||
user = getattr(params, "user", None)
|
user = getattr(params, "user", None)
|
||||||
if user:
|
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
|
# 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
|
# https://magicstack.github.io/asyncpg/current/_modules/asyncpg/connection.html
|
||||||
addr = getattr(connection, "_addr", None)
|
addr = getattr(connection, "_addr", None)
|
||||||
if isinstance(addr, tuple):
|
if isinstance(addr, tuple):
|
||||||
span_attributes[SpanAttributes.NET_PEER_NAME] = addr[0]
|
span_attributes[NET_PEER_NAME] = addr[0]
|
||||||
span_attributes[SpanAttributes.NET_PEER_PORT] = addr[1]
|
span_attributes[NET_PEER_PORT] = addr[1]
|
||||||
span_attributes[SpanAttributes.NET_TRANSPORT] = (
|
span_attributes[NET_TRANSPORT] = NetTransportValues.IP_TCP.value
|
||||||
NetTransportValues.IP_TCP.value
|
|
||||||
)
|
|
||||||
elif isinstance(addr, str):
|
elif isinstance(addr, str):
|
||||||
span_attributes[SpanAttributes.NET_PEER_NAME] = addr
|
span_attributes[NET_PEER_NAME] = addr
|
||||||
span_attributes[SpanAttributes.NET_TRANSPORT] = (
|
span_attributes[NET_TRANSPORT] = NetTransportValues.OTHER.value
|
||||||
NetTransportValues.OTHER.value
|
|
||||||
)
|
|
||||||
|
|
||||||
if query is not None:
|
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:
|
if parameters is not None and len(parameters) > 0:
|
||||||
span_attributes["db.statement.parameters"] = str(parameters)
|
span_attributes["db.statement.parameters"] = str(parameters)
|
||||||
|
Reference in New Issue
Block a user