2016-08-15 3 views
0

스프링 부트 액추에이터를 사용하여 앱 상태를 반환합니다. 스프링 부트 액추에이터 - 맞춤형 건강 엔드 포인트

public class HealthMonitor implements HealthIndicator { 

    @Override 
    public Health health() { 
     int errorCode = check(); 
     if (errorCode != 0) { 
      return Health.down().withDetail("Error Code", errorCode).build(); 
     } 
     return Health.up().build(); 
    } 

    public int check() { 
     return 0; 
    } 

} 

나는

{ 
    "status": "UP", 
    "diskSpace": { 
    "status": "UP", 
    "free": 55020113920, 
    "threshold": 10485760 
    }, 
    "db": { 
    "status": "UP", 
    "database": "Oracle", 
    "hello": "Hello" 
    } 
} 

내가

{status: "Healthy"} 

이 그것을 할 수있는 방법이 있나요 아래에 유사한 응답을 반환 할 아래에 반응을 보이지?

+0

을 대신'errorCode' – 11thdimension

+0

나는 경우에 HealthIndicator를 구현하지해야'Health' 인스턴스가 확인 후 사용자 정의 응답을 반환 반환하는? Health 인스턴스를 사용하여 언급 한 것과 같은 사용자 지정 메시지를 반환하는 방법이 있습니까? –

+0

'건강'이 정상적인 수업이라고 생각했습니다. 나는 내가 지금 생각할 수있는 유일한 방법은 외부 사용으로부터이 서비스를 보호하고 커스텀 상태 정보를 얻기 위해'/ customHealth'와 같은 커스텀 서비스를 만들고이'/ health' 서비스를 서버에서 사용하는 것이다. 서비스. – 11thdimension

답변

-2

스프링 부트와 헬스 인디케이터에는 많은 유연성이 있습니다.

먼저 서비스의 복잡성에 따라 위에서 설명한 HealthIndicator가 필요하지 않을 수 있습니다. 기본적으로 스프링 부트는 스프링 구성에 따라 상태를 반환합니다. 여기에는 데이터베이스 (SQL과 일부 noSQL 모두), 메일, JMS 및 기타가 포함됩니다.

endpoints.health : 이것은 당신이 또는 HealthIndicator 클래스하지 않고, 원하는 돌아 section 47.6.1

가장 쉬운 방법으로 최신 봄 부트 문서에 설명되어 있습니다, 당신의 application.properties의 속성을 설정하는 것입니다. sensitive = true

이것은 스프링 부트의 이후 버전 (1.4? 이후)에만 적용될 수 있습니다.

0

제공된 스프링 부트 헬스 엔드 포인트를 극적으로 다른 형식으로 표시하도록 설득 할 수 없을 것이라고 생각합니다.

대부분의 스프링 소스 코드는 매우 명확하며 이는 예외가 아닙니다. org.springframework.boot.actuate.endpoint.HealthEndpoint의 출처를 살펴보면 invoke() 메서드가 표시되어 Health을 반환합니다. JSON은 잭슨이 객체를 정렬 한 것입니다.

AbstractEndpoint을 확장하여 HealthEndpoint과 완전히 동일한 방법으로 자신의 엔드 포인트를 만들 수 있으며 자신이 원하는 클래스를 반환 할 수 있습니다.

당신은 그것이 HealthEndpoint 빈에 위임 할 수있다 :

public MyHealthEndpoint(HealthEndpoint delegate) { 
    this.delegate = delegate; 
} 

@Override 
public MyHealth invoke() { 
     Health health = delegate.invoke(); 
     return new MyHealth(health.getStatus()); 
} 
관련 문제