diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java index 885c4e57de5e..828a71a2e9ef 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java @@ -18,6 +18,7 @@ import java.util.Collection; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import javax.sql.DataSource; @@ -64,12 +65,15 @@ public class DataSourceHealthContributorAutoConfiguration extends CompositeHealthContributorConfiguration implements InitializingBean { + private Map dataSources; + private final Collection metadataProviders; private DataSourcePoolMetadataProvider poolMetadataProvider; public DataSourceHealthContributorAutoConfiguration(Map dataSources, ObjectProvider metadataProviders) { + this.dataSources = dataSources; this.metadataProviders = metadataProviders.orderedStream().collect(Collectors.toList()); } @@ -89,7 +93,12 @@ protected AbstractHealthIndicator createIndicator(DataSource source) { if (source instanceof AbstractRoutingDataSource) { return new RoutingDataSourceHealthIndicator(); } - return new DataSourceHealthIndicator(source, getValidationQuery(source)); + String name = this.dataSources.entrySet().stream() + .filter(entry -> entry.getValue().equals(source)) + .findAny() + .map(Entry::getKey) + .orElse(null); + return new DataSourceHealthIndicator(name, source, getValidationQuery(source)); } private String getValidationQuery(DataSource source) { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java index 199e05277eb2..910a6f6cdc10 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java @@ -82,7 +82,18 @@ public DataSourceHealthIndicator(DataSource dataSource) { * @param query the validation query to use (can be {@code null}) */ public DataSourceHealthIndicator(DataSource dataSource, String query) { - super("DataSource health check failed"); + this(null, dataSource, query); + } + + /** + * Create a new {@link DataSourceHealthIndicator} using the specified + * {@link DataSource} and validation query. + * @param name the name of the data source + * @param dataSource the data source + * @param query the validation query to use (can be {@code null}) + */ + public DataSourceHealthIndicator(String name, DataSource dataSource, String query) { + super(ex -> "DataSource " + name + " health check failed : " + ex.getMessage()); this.dataSource = dataSource; this.query = query; this.jdbcTemplate = (dataSource != null) ? new JdbcTemplate(dataSource) : null;