Skip to content

Commit 542b6a5

Browse files
authored
Propagate database number, user, and RedisURI into Tracing (#3005)
* Propagate database number, user, and RedisURI into Tracing * Update attribute names as recommend * Add db.user info * Polishing
1 parent 9185a49 commit 542b6a5

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/main/java/io/lettuce/core/protocol/CommandHandler.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,17 @@
3030
import java.util.Collection;
3131
import java.util.LinkedHashSet;
3232
import java.util.List;
33+
import java.util.Optional;
3334
import java.util.Queue;
3435
import java.util.Set;
3536
import java.util.concurrent.atomic.AtomicLong;
3637

3738
import io.lettuce.core.ClientOptions;
39+
import io.lettuce.core.ConnectionBuilder;
3840
import io.lettuce.core.RedisConnectionException;
41+
import io.lettuce.core.RedisCredentials;
3942
import io.lettuce.core.RedisException;
43+
import io.lettuce.core.RedisURI;
4044
import io.lettuce.core.api.push.PushListener;
4145
import io.lettuce.core.api.push.PushMessage;
4246
import io.lettuce.core.internal.LettuceAssert;
@@ -478,6 +482,15 @@ private void attachTracing(ChannelHandlerContext ctx, RedisCommand<?, ?, ?> comm
478482
Tracer.Span span = tracer.nextSpan(context);
479483
span.name(command.getType().toString());
480484

485+
if (channel.hasAttr(ConnectionBuilder.REDIS_URI)) {
486+
String redisUriStr = channel.attr(ConnectionBuilder.REDIS_URI).get();
487+
RedisURI redisURI = RedisURI.create(redisUriStr);
488+
span.tag("server.address", redisURI.toString());
489+
span.tag("db.namespace", String.valueOf(redisURI.getDatabase()));
490+
span.tag("user.name", Optional.ofNullable(redisURI.getCredentialsProvider().resolveCredentials().block())
491+
.map(RedisCredentials::getUsername).orElse(""));
492+
}
493+
481494
if (tracedEndpoint != null) {
482495
span.remoteEndpoint(tracedEndpoint);
483496
} else {

src/test/java/io/lettuce/core/tracing/SynchronousIntegrationTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ public SampleTestRunnerConsumer yourCode() {
7575
.containsEntry("net.sock.peer.addr", TestSettings.host())
7676
.containsEntry("net.sock.peer.port", "" + TestSettings.port());
7777
assertThat(finishedSpan.getTags()).containsKeys("db.operation");
78+
assertThat(finishedSpan.getTags()).containsKeys("server.address");
79+
assertThat(finishedSpan.getTags()).containsKeys("db.namespace");
80+
assertThat(finishedSpan.getTags()).containsKeys("user.name");
7881
}
7982

8083
assertThat(commands).extracting(RedisCommand::getType).contains(CommandType.PING, CommandType.HELLO);

0 commit comments

Comments
 (0)