GuanceCloud / dd-trace-java

Datadog APM client for Java
https://docs.datadoghq.com/tracing/languages/java
Apache License 2.0
9 stars 3 forks source link

redis 在集群模式下无法获取 peer_ip #81

Closed lrwh closed 4 months ago

lrwh commented 4 months ago

环境 Lettuce5

在集群模式下无法获取 peer_ip,非集群下可以正常获取

lrwh commented 4 months ago

经查 LettuceAsyncCommandsAdvice 在集群模式下,通过 StatefulConnection 获取 RedisURI 是空属性,故集群模式下无法获取到 peer_ip。

public class LettuceAsyncCommandsAdvice {

  @Advice.OnMethodEnter(suppress = Throwable.class)
  public static AgentScope onEnter(
      @Advice.Argument(0) final RedisCommand command,
      @Advice.This final AbstractRedisAsyncCommands thiz) {

    final AgentSpan span = startSpan(LettuceClientDecorator.OPERATION_NAME);
    DECORATE.afterStart(span);
    DECORATE.onConnection(
        span,
        InstrumentationContext.get(StatefulConnection.class, RedisURI.class)
            .get(thiz.getConnection()));
    DECORATE.onCommand(span, command);

    return activateSpan(span);
  }
......
}