Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disabling HealtCheck for specific DataSources in Spring Actuator

i have issue with disabling specific DataSources in Spring Actuator. I currently have task in my application to implement Spring Actuator, but need Actuator to ignore/disable for some features in app(Health Indicator mainly). Application is built from other mini apps. Any suggestions or instructions how to start it ?

like image 795
Jozo Skoko Avatar asked Oct 14 '25 20:10

Jozo Skoko


2 Answers

Disable the default datasources health indicator

management.health.db.enabled=false

and customise the your required data source with DataSourceHealthIndicator

example:

@Autowired
private DataSource requiredDataSource;

@Bean
public DataSourceHealthIndicator requiredDataSourceHealthIndicator() {
    return new DataSourceHealthIndicator(requiredDataSource);
}
like image 111
Bhushan Uniyal Avatar answered Oct 17 '25 09:10

Bhushan Uniyal


An important point to prevent the Health check system becomes fully none-functional due to infinite loop for waiting for database connection is to configure the connectionTimeout and validationTimeout in datasource config.

In the case that we using HikariCP as connection pool provider, with respect to the case in hand the implementation will look like below,

    HikariConfig config = new HikariConfig();
    ...
    config.setInitializationFailTimeout(1000);
    config.setConnectionTimeout(1500);
    config.setValidationTimeout(1500);
        
    ...
        
    return new HikariDataSource(config).unwrap(DataSource.class)
@Bean
public DataSourceHealthIndicator dataSourceHealthIndicator(){
    ...
    return new DataSourceHealthIndicator(dataSource, "SELECT 1");
}
@Component
@RequiredArgsConstructor
public class CustomHealth implements HealthIndicator {

    @Override
    public Health health() {
        ...
        return Health.status(healthIndicator.health().getStatus()).build();
    }

    private final DataSourceHealthIndicator healthIndicator;
}

And as Bhushan Uniyal stated you can disable the actuator default DataSourceHealthIndicator in your property files

YML

management:
  health:
    db:
      enabled: false
      
Properties

management.health.db.enabled: false
like image 41
Lunatic Avatar answered Oct 17 '25 09:10

Lunatic