From ee90c7e50c7dd16d335d56253114f485b6536a08 Mon Sep 17 00:00:00 2001 From: Srikanth Chekuri Date: Sun, 15 Nov 2020 02:10:34 +0530 Subject: [PATCH] Update redis instrumentation to follow semantic conventions --- .../opentelemetry/instrumentation/redis/__init__.py | 8 +++++--- .../src/opentelemetry/instrumentation/redis/util.py | 13 +++++++------ .../tests/test_redis.py | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/__init__.py b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/__init__.py index e1c5db1e9..f8ec42c0c 100644 --- a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/__init__.py @@ -59,7 +59,6 @@ from opentelemetry.instrumentation.utils import unwrap _DEFAULT_SERVICE = "redis" _RAWCMD = "db.statement" -_CMD = "redis.command" def _set_connection_attributes(span, conn): @@ -75,7 +74,7 @@ def _traced_execute_command(func, instance, args, kwargs): tracer = getattr(redis, "_opentelemetry_tracer") query = _format_command_args(args) with tracer.start_as_current_span( - _CMD, kind=trace.SpanKind.CLIENT + args[0], kind=trace.SpanKind.CLIENT ) as span: if span.is_recording(): span.set_attribute("service", tracer.instrumentation_info.name) @@ -91,8 +90,11 @@ def _traced_execute_pipeline(func, instance, args, kwargs): cmds = [_format_command_args(c) for c, _ in instance.command_stack] resource = "\n".join(cmds) + pipeline_cmnds = " ".join([args[0] for args, _ in instance.command_stack]) + span_name = "PIPELINE" + " " + pipeline_cmnds + with tracer.start_as_current_span( - _CMD, kind=trace.SpanKind.CLIENT + span_name, kind=trace.SpanKind.CLIENT ) as span: if span.is_recording(): span.set_attribute("service", tracer.instrumentation_info.name) diff --git a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py index 289513408..f2ac71a36 100644 --- a/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py +++ b/instrumentation/opentelemetry-instrumentation-redis/src/opentelemetry/instrumentation/redis/util.py @@ -20,15 +20,16 @@ Some utils used by the redis integration def _extract_conn_attributes(conn_kwargs): """ Transform redis conn info into dict """ attributes = { - "db.type": "redis", - "db.instance": conn_kwargs.get("db", 0), + "db.system": "redis", + "db.name": conn_kwargs.get("db", 0), } try: - attributes["db.url"] = "redis://{}:{}".format( - conn_kwargs["host"], conn_kwargs["port"] - ) + attributes["net.peer.name"] = conn_kwargs["host"] + attributes["net.peer.ip"] = conn_kwargs["port"] + attributes["net.transport"] = "IP.TCP" except KeyError: - pass # don't include url attribute + attributes["net.peer.name"] = conn_kwargs["path"] + attributes["net.transport"] = "Unix" return attributes diff --git a/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py b/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py index 3e07ac725..0ca99bead 100644 --- a/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py +++ b/instrumentation/opentelemetry-instrumentation-redis/tests/test_redis.py @@ -31,7 +31,7 @@ class TestRedis(TestBase): spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) span = spans[0] - self.assertEqual(span.name, "redis.command") + self.assertEqual(span.name, "GET") self.assertEqual(span.kind, SpanKind.CLIENT) def test_not_recording(self):