diff --git a/docs/pom.xml b/docs/pom.xml index 659b800ef..3816ec5fd 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -14,7 +14,7 @@ spring-cloud-sleuth - 1.0.x,1.1.x + 1.0.x,1.1.x,1.2.x ${basedir}/.. diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java index 39e5fef6e..ccda2ad05 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/ServerPropertiesHostLocator.java @@ -25,7 +25,9 @@ import org.springframework.boot.context.embedded.EmbeddedServletContainerInitial import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.commons.util.InetUtilsProperties; import org.springframework.cloud.sleuth.Span; +import org.springframework.context.EnvironmentAware; import org.springframework.context.event.EventListener; +import org.springframework.core.env.Environment; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -43,15 +45,17 @@ import org.springframework.util.StringUtils; * @author Dave Syer * @since 1.0.0 */ -public class ServerPropertiesHostLocator implements HostLocator { +public class ServerPropertiesHostLocator implements HostLocator, EnvironmentAware { private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass()); + private static final String IP_ADDRESS_PROP_NAME = "spring.cloud.client.ipAddress"; private final ServerProperties serverProperties; // Nullable private final String appName; private final InetUtils inetUtils; private final ZipkinProperties zipkinProperties; private Integer port; // Lazy assigned + private Environment environment; public ServerPropertiesHostLocator(ServerProperties serverProperties, String appName, ZipkinProperties zipkinProperties, InetUtils inetUtils) { @@ -98,6 +102,9 @@ public class ServerPropertiesHostLocator implements HostLocator { if (this.serverProperties != null && this.serverProperties.getAddress() != null) { address = this.serverProperties.getAddress().getHostAddress(); } + else if (this.environment != null) { + address = this.environment.getProperty(IP_ADDRESS_PROP_NAME, String.class); + } else { address = this.inetUtils.findFirstNonLoopbackAddress().getHostAddress(); } @@ -120,4 +127,8 @@ public class ServerPropertiesHostLocator implements HostLocator { return serviceName; } + @Override + public void setEnvironment(Environment environment) { + this.environment = environment; + } } diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java index 5f543095d..ac3f6e0fe 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ServerPropertiesEndpointLocator.java @@ -16,8 +16,6 @@ package org.springframework.cloud.sleuth.zipkin; -import zipkin.Endpoint; - import java.lang.invoke.MethodHandles; import java.nio.ByteBuffer; @@ -27,8 +25,11 @@ import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.commons.util.InetUtilsProperties; +import org.springframework.context.EnvironmentAware; import org.springframework.context.event.EventListener; +import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; +import zipkin.Endpoint; /** * {@link EndpointLocator} implementation that: @@ -43,15 +44,18 @@ import org.springframework.util.StringUtils; * @author Dave Syer * @since 1.0.0 */ -public class ServerPropertiesEndpointLocator implements EndpointLocator { +public class ServerPropertiesEndpointLocator implements EndpointLocator, + EnvironmentAware { private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass()); + private static final String IP_ADDRESS_PROP_NAME = "spring.cloud.client.ipAddress"; private final ServerProperties serverProperties; private final String appName; private final InetUtils inetUtils; private final ZipkinProperties zipkinProperties; private Integer port; + private Environment environment; public ServerPropertiesEndpointLocator(ServerProperties serverProperties, String appName, ZipkinProperties zipkinProperties, InetUtils inetUtils) { @@ -103,8 +107,18 @@ public class ServerPropertiesEndpointLocator implements EndpointLocator { return ByteBuffer.wrap(this.serverProperties.getAddress().getAddress()) .getInt(); } + else if (this.environment != null) { + String ipAddress = this.environment + .getProperty(IP_ADDRESS_PROP_NAME, String.class); + return InetUtils.getIpAddressAsInt(ipAddress); + } else { return ByteBuffer.wrap(this.inetUtils.findFirstNonLoopbackAddress().getAddress()).getInt(); } } + + @Override + public void setEnvironment(Environment environment) { + this.environment = environment; + } }