복붙노트

[SPRING] 스프링 부트 액츄에이터 상태 표시기

SPRING

스프링 부트 액츄에이터 상태 표시기

우리는 여러 프로젝트에 Spring Boot를 사용하고 있으며 최신 버전 1.2.3을 사용하고 있습니다. 액츄에이터가 통합되었습니다. 지금까지는 / health 표시기 [default]가 서비스가 중단되었음을 표시한다는 것을 제외하고는 정상적으로 작동합니다. 이것은 사실이 아닙니다. 이러한 서비스는 데이터 소스로 구현됩니다. 다른 SOAP 또는 Rest 서비스를 호출 할 수 있습니다. 서비스가 중단되었는지 여부를 측정하는 의료 서비스는 무엇입니까?

해결법

  1. ==============================

    1.#derFuerst에 따르면 DataSourceHealthIndicator에는 DB가 있는지 여부를 확인하는 기본 쿼리가 있습니다.

    #derFuerst에 따르면 DataSourceHealthIndicator에는 DB가 있는지 여부를 확인하는 기본 쿼리가 있습니다.

    적절한 공급 업체별 쿼리를 사용하려는 경우 Oracle 데이터 소스의 경우와 같이 구성 클래스에 자체 상태 표시기를 작성해야합니다.

    @Autowired(required = false)
    private DataSource dataSource;
    
    @Bean
    @Primary
    public DataSourceHealthIndicator dataSourceHealthIndicator() {
        return new DataSourceHealthIndicator(dataSource, "SELECT 1 FROM DUAL");
    }
    
  2. ==============================

    2.DataSourceHealthIndicator는 사용 가능성을 검사하는 데 사용됩니다. 기본 쿼리는 SELECT 1이지만 일부 제품 별 쿼리도 있습니다. 자신의 HealthIndicator를 작성할 수 있습니다. 인터페이스를 구현하거나 AbstractHealthIndicator를 확장하십시오. 기본 db-health-check를 비활성화하려면이 줄을 응용 프로그램 속성 management.health.db.enabled = false에 넣습니다. 희망은 도움이 Logged

    DataSourceHealthIndicator는 사용 가능성을 검사하는 데 사용됩니다. 기본 쿼리는 SELECT 1이지만 일부 제품 별 쿼리도 있습니다. 자신의 HealthIndicator를 작성할 수 있습니다. 인터페이스를 구현하거나 AbstractHealthIndicator를 확장하십시오. 기본 db-health-check를 비활성화하려면이 줄을 응용 프로그램 속성 management.health.db.enabled = false에 넣습니다. 희망은 도움이 Logged

  3. ==============================

    3.위의 설명은 내 연구를 시작하는 데 도움이되었지만 나를 위해 충분하지 않았습니다.

    위의 설명은 내 연구를 시작하는 데 도움이되었지만 나를 위해 충분하지 않았습니다.

    @Bean
    @Primary
    public DataSourceHealthIndicator dataSourceHealthIndicator() {
        return new DataSourceHealthIndicator(dataSource, "SELECT 1 FROM DUAL");
    }
    

    헬스 인디케이터 @Bean을 다음과 같이 정의하고 필요한 쿼리를 제공합니다 :

    @Bean
    @Primary
    public HealthIndicator dbHealthIndicator() {
      return new DataSourceHealthIndicator(dataSource, "SELECT 1 FROM DUMMY");
    }
    

    질의가 제공되지 않으면 SELECT 1이 사용됩니다. #derFuerst가 사용되는 것처럼 DataSourceHealthIndicator의 기본 구현은 다음과 같습니다.

    public DataSourceHealthIndicator(DataSource dataSource, String query) {
        super("DataSource health check failed");
        this.dataSource = dataSource;
        this.query = query;
        this.jdbcTemplate = dataSource != null ? new JdbcTemplate(dataSource) : null;
    }
    ...
    protected String getValidationQuery(String product) {
            String query = this.query;
            if (!StringUtils.hasText(query)) {
                DatabaseDriver specific = DatabaseDriver.fromProductName(product);
                query = specific.getValidationQuery();
            }
    
            if (!StringUtils.hasText(query)) {
                query = "SELECT 1";
            }
    
            return query;
        }
    
  4. from https://stackoverflow.com/questions/29865940/spring-boot-actuator-health-indicator by cc-by-sa and MIT license