From 40a00214b55868839071913b708899e0cbc064ec Mon Sep 17 00:00:00 2001 From: Csaba Kos Date: Fri, 8 Jan 2021 12:38:04 -0600 Subject: [PATCH] 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. --- .../sleuth/brave/bridge/BraveHttpServerRequest.java | 10 ++++++++++ .../cloud/sleuth/instrument/web/TraceFilterTests.java | 1 + 2 files changed, 11 insertions(+) diff --git a/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/bridge/BraveHttpServerRequest.java b/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/bridge/BraveHttpServerRequest.java index 8c7ce455d..5cc784ffa 100644 --- a/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/bridge/BraveHttpServerRequest.java +++ b/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/bridge/BraveHttpServerRequest.java @@ -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; } diff --git a/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java b/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java index 23ccd37a0..bce777ec8 100644 --- a/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java +++ b/tests/common/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterTests.java @@ -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