Refactor redis instrumentation to use semconv incubating attributes (#3534)

* Replaced usage of opentelemetry.semconv.trace with opentelemetry.semconv._incubating.attributes.

* Fixed ruff failure
This commit is contained in:
Christoph Heger
2025-05-23 01:27:14 -07:00
committed by GitHub
parent b3f98ab936
commit c1a689507b
2 changed files with 29 additions and 31 deletions

View File

@ -135,7 +135,9 @@ from opentelemetry.instrumentation.redis.util import (
) )
from opentelemetry.instrumentation.redis.version import __version__ from opentelemetry.instrumentation.redis.version import __version__
from opentelemetry.instrumentation.utils import unwrap from opentelemetry.instrumentation.utils import unwrap
from opentelemetry.semconv.trace import SpanAttributes from opentelemetry.semconv._incubating.attributes.db_attributes import (
DB_STATEMENT,
)
from opentelemetry.trace import ( from opentelemetry.trace import (
StatusCode, StatusCode,
Tracer, Tracer,
@ -200,7 +202,7 @@ def _traced_execute_factory(
name, kind=trace.SpanKind.CLIENT name, kind=trace.SpanKind.CLIENT
) as span: ) as span:
if span.is_recording(): if span.is_recording():
span.set_attribute(SpanAttributes.DB_STATEMENT, query) span.set_attribute(DB_STATEMENT, query)
_set_connection_attributes(span, instance) _set_connection_attributes(span, instance)
span.set_attribute("db.redis.args_length", len(args)) span.set_attribute("db.redis.args_length", len(args))
if span.name == "redis.create_index": if span.name == "redis.create_index":
@ -239,7 +241,7 @@ def _traced_execute_pipeline_factory(
span_name, kind=trace.SpanKind.CLIENT span_name, kind=trace.SpanKind.CLIENT
) as span: ) as span:
if span.is_recording(): if span.is_recording():
span.set_attribute(SpanAttributes.DB_STATEMENT, resource) span.set_attribute(DB_STATEMENT, resource)
_set_connection_attributes(span, instance) _set_connection_attributes(span, instance)
span.set_attribute( span.set_attribute(
"db.redis.pipeline_length", len(command_stack) "db.redis.pipeline_length", len(command_stack)
@ -281,7 +283,7 @@ def _async_traced_execute_factory(
name, kind=trace.SpanKind.CLIENT name, kind=trace.SpanKind.CLIENT
) as span: ) as span:
if span.is_recording(): if span.is_recording():
span.set_attribute(SpanAttributes.DB_STATEMENT, query) span.set_attribute(DB_STATEMENT, query)
_set_connection_attributes(span, instance) _set_connection_attributes(span, instance)
span.set_attribute("db.redis.args_length", len(args)) span.set_attribute("db.redis.args_length", len(args))
if callable(request_hook): if callable(request_hook):
@ -317,7 +319,7 @@ def _async_traced_execute_pipeline_factory(
span_name, kind=trace.SpanKind.CLIENT span_name, kind=trace.SpanKind.CLIENT
) as span: ) as span:
if span.is_recording(): if span.is_recording():
span.set_attribute(SpanAttributes.DB_STATEMENT, resource) span.set_attribute(DB_STATEMENT, resource)
_set_connection_attributes(span, instance) _set_connection_attributes(span, instance)
span.set_attribute( span.set_attribute(
"db.redis.pipeline_length", len(command_stack) "db.redis.pipeline_length", len(command_stack)

View File

@ -25,10 +25,16 @@ from redis.exceptions import WatchError
from opentelemetry import trace from opentelemetry import trace
from opentelemetry.instrumentation.redis import RedisInstrumentor from opentelemetry.instrumentation.redis import RedisInstrumentor
from opentelemetry.semconv.trace import ( from opentelemetry.semconv._incubating.attributes.db_attributes import (
DB_REDIS_DATABASE_INDEX,
DB_SYSTEM,
DbSystemValues, DbSystemValues,
)
from opentelemetry.semconv._incubating.attributes.net_attributes import (
NET_PEER_NAME,
NET_PEER_PORT,
NET_TRANSPORT,
NetTransportValues, NetTransportValues,
SpanAttributes,
) )
from opentelemetry.test.test_base import TestBase from opentelemetry.test.test_base import TestBase
from opentelemetry.trace import SpanKind from opentelemetry.trace import SpanKind
@ -257,18 +263,14 @@ class TestRedis(TestBase):
span = spans[0] span = spans[0]
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_SYSTEM], span.attributes[DB_SYSTEM],
DbSystemValues.REDIS.value, DbSystemValues.REDIS.value,
) )
self.assertEqual(span.attributes[DB_REDIS_DATABASE_INDEX], 0)
self.assertEqual(span.attributes[NET_PEER_NAME], "localhost")
self.assertEqual(span.attributes[NET_PEER_PORT], 6379)
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 0 span.attributes[NET_TRANSPORT],
)
self.assertEqual(
span.attributes[SpanAttributes.NET_PEER_NAME], "localhost"
)
self.assertEqual(span.attributes[SpanAttributes.NET_PEER_PORT], 6379)
self.assertEqual(
span.attributes[SpanAttributes.NET_TRANSPORT],
NetTransportValues.IP_TCP.value, NetTransportValues.IP_TCP.value,
) )
@ -283,18 +285,14 @@ class TestRedis(TestBase):
span = spans[0] span = spans[0]
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_SYSTEM], span.attributes[DB_SYSTEM],
DbSystemValues.REDIS.value, DbSystemValues.REDIS.value,
) )
self.assertEqual(span.attributes[DB_REDIS_DATABASE_INDEX], 1)
self.assertEqual(span.attributes[NET_PEER_NAME], "1.1.1.1")
self.assertEqual(span.attributes[NET_PEER_PORT], 6380)
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 1 span.attributes[NET_TRANSPORT],
)
self.assertEqual(
span.attributes[SpanAttributes.NET_PEER_NAME], "1.1.1.1"
)
self.assertEqual(span.attributes[SpanAttributes.NET_PEER_PORT], 6380)
self.assertEqual(
span.attributes[SpanAttributes.NET_TRANSPORT],
NetTransportValues.IP_TCP.value, NetTransportValues.IP_TCP.value,
) )
@ -311,18 +309,16 @@ class TestRedis(TestBase):
span = spans[0] span = spans[0]
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_SYSTEM], span.attributes[DB_SYSTEM],
DbSystemValues.REDIS.value, DbSystemValues.REDIS.value,
) )
self.assertEqual(span.attributes[DB_REDIS_DATABASE_INDEX], 3)
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.DB_REDIS_DATABASE_INDEX], 3 span.attributes[NET_PEER_NAME],
)
self.assertEqual(
span.attributes[SpanAttributes.NET_PEER_NAME],
"/path/to/socket.sock", "/path/to/socket.sock",
) )
self.assertEqual( self.assertEqual(
span.attributes[SpanAttributes.NET_TRANSPORT], span.attributes[NET_TRANSPORT],
NetTransportValues.OTHER.value, NetTransportValues.OTHER.value,
) )