Skip to content

Commit dabd2f2

Browse files
authored
Merge pull request #210 from lonewolf3739/dbindex-redis
2 parents 7f0d5ae + 49f8c52 commit dabd2f2

File tree

2 files changed

+30
-1
lines changed
  • instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis
  • tests/opentelemetry-docker-tests/tests/redis

2 files changed

+30
-1
lines changed

instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ def _extract_conn_attributes(conn_kwargs):
2121
""" Transform redis conn info into dict """
2222
attributes = {
2323
"db.system": "redis",
24-
"db.name": conn_kwargs.get("db", 0),
2524
}
25+
db = conn_kwargs.get("db", 0)
26+
attributes["db.name"] = db
27+
attributes["db.redis.database_index"] = db
2628
try:
2729
attributes["net.peer.name"] = conn_kwargs["host"]
2830
attributes["net.peer.ip"] = conn_kwargs["port"]

tests/opentelemetry-docker-tests/tests/redis/test_redis_functional.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,30 @@ def test_parent(self):
115115
child_span.attributes.get("service"), self.test_service
116116
)
117117
self.assertEqual(child_span.name, "GET")
118+
119+
120+
class TestRedisDBIndexInstrument(TestBase):
121+
def setUp(self):
122+
super().setUp()
123+
self.redis_client = redis.Redis(port=6379, db=10)
124+
self.redis_client.flushall()
125+
RedisInstrumentor().instrument(tracer_provider=self.tracer_provider)
126+
127+
def tearDown(self):
128+
super().tearDown()
129+
RedisInstrumentor().uninstrument()
130+
131+
def _check_span(self, span, name):
132+
self.assertEqual(span.name, name)
133+
self.assertIs(span.status.status_code, trace.status.StatusCode.UNSET)
134+
self.assertEqual(span.attributes["net.peer.name"], "localhost")
135+
self.assertEqual(span.attributes["net.peer.ip"], 6379)
136+
self.assertEqual(span.attributes["db.redis.database_index"], 10)
137+
138+
def test_get(self):
139+
self.assertIsNone(self.redis_client.get("foo"))
140+
spans = self.memory_exporter.get_finished_spans()
141+
self.assertEqual(len(spans), 1)
142+
span = spans[0]
143+
self._check_span(span, "GET")
144+
self.assertEqual(span.attributes.get("db.statement"), "GET foo")

0 commit comments

Comments
 (0)