Set remote IP and port for servlet HTTP server traces. (#1817)

* Set remote IP and port for servlet HTTP server traces.

* Add null check and use broader ServletRequest type instead of HttpServletRequest.
This commit is contained in:
Csaba Kos
2021-01-08 12:38:04 -06:00
committed by GitHub
parent 733041bc0a
commit 40a00214b5
2 changed files with 11 additions and 0 deletions

View File

@@ -20,6 +20,8 @@ import java.net.InetSocketAddress;
import java.util.Collection;
import java.util.Collections;
import javax.servlet.ServletRequest;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.http.HttpServerRequest;
import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -131,6 +133,14 @@ class BraveHttpServerRequest implements HttpServerRequest {
}
return span.remoteIpAndPort(addr.getAddress().getHostAddress(), addr.getPort());
}
else if (delegate instanceof ServletRequest) {
ServletRequest servletRequest = (ServletRequest) delegate;
String addr = servletRequest.getRemoteAddr();
if (addr == null) {
return false;
}
return span.remoteIpAndPort(addr, servletRequest.getRemotePort());
}
return false;
}

View File

@@ -107,6 +107,7 @@ public abstract class TraceFilterTests implements TestTracingAwareSupplier {
HttpMethod.GET.toString());
// we don't check for status_code anymore cause Brave doesn't support it oob
// .containsEntry("http.status_code", "200")
BDDAssertions.then(this.spans.get(0).getRemoteIp()).isEqualTo("127.0.0.1");
}
@Test