[SPRING] 어떻게 봄 부트 건강의 정의 건강 검진을 추가?
SPRING어떻게 봄 부트 건강의 정의 건강 검진을 추가?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
이 응용 프로그램에 몇 가지 유용한 엔드 포인트를 추가합니다. 그 중 하나는 / 건강이다. 응용 프로그램을 시작하고 / 건강 엔드 포인트로 이동하면 당신은 이미 일부 데이터를 반환 볼 수 있습니다.
{
"status":"UP",
"diskSpace": {
"status":"UP",
"free":56443746,
"threshold":1345660
}
}
어떻게 봄 부트 건강의 정의 건강 검진을 추가?
해결법
-
==============================
1.사용자 정의 상태 검사를 추가하는 것은 간단합니다. 다만, 새로운 자바 클래스를 생성 AbstractHealthIndicator에서 그것을 확장하고 doHealthCheck 방법을 구현한다. 이 방법은 몇 가지 유용한 방법으로 전달 된 빌더를 가져옵니다. 그렇지 않은 경우는 () 당신의 건강은 OK 또는 builder.down 경우) (builder.up 호출합니다. 당신이 건강을 확인하는 일은 전적으로 귀하이다. 아마 당신은 몇 가지 서버를 ping 또는 일부 파일을 확인하시기 바랍니다.
사용자 정의 상태 검사를 추가하는 것은 간단합니다. 다만, 새로운 자바 클래스를 생성 AbstractHealthIndicator에서 그것을 확장하고 doHealthCheck 방법을 구현한다. 이 방법은 몇 가지 유용한 방법으로 전달 된 빌더를 가져옵니다. 그렇지 않은 경우는 () 당신의 건강은 OK 또는 builder.down 경우) (builder.up 호출합니다. 당신이 건강을 확인하는 일은 전적으로 귀하이다. 아마 당신은 몇 가지 서버를 ping 또는 일부 파일을 확인하시기 바랍니다.
@Component public class CustomHealthCheck extends AbstractHealthIndicator { @Override protected void doHealthCheck(Health.Builder bldr) throws Exception { // TODO implement some check boolean running = true; if (running) { bldr.up(); } else { bldr.down(); } } }
이 새로운 건강 체크 (확인 @ComponentScan 응용 프로그램에) 활성화에 충분하다. 응용 프로그램을 다시 시작하고 / 건강 엔드 포인트에 브라우저를 찾아 당신은 새로 추가 된 건강 검진을 볼 수 있습니다.
{ "status":"UP", "CustomHealthCheck": { "status":"UP" }, "diskSpace": { "status":"UP", "free":56443746, "threshold":1345660 } }
-
==============================
2.봄 부팅 2.X 크게 액추에이터를 변경했습니다. 기존 엔드 포인트를 확장하는 새로운, 더 나은 메커니즘은 @EndpointWebExtension를 통해 사용할 수 있습니다.
봄 부팅 2.X 크게 액추에이터를 변경했습니다. 기존 엔드 포인트를 확장하는 새로운, 더 나은 메커니즘은 @EndpointWebExtension를 통해 사용할 수 있습니다.
즉 건강 포인트가 하나 개의 확장이 액츄에이터 자체 박스에서 제공되기 때문에 확장 비트 까다, 상기된다. 콩 초기화 프로세스를 조작하지 않으면, 응용 프로그램은이 확장을 볼 수 있기 때문에 시작할 수 없습니다 선택되는 하나 이해하지 않습니다. 쉬운 방법 대신 정보를 사용하고 확장하는 것입니다 :
@Component @EndpointWebExtension(endpoint = InfoEndpoint.class) public class InfoWebEndpointExtension { @Value("${info.build.version}") private String versionNumber; @Value("${git.commit.id}") private String gitCommit; @Value("${info.build.name}") private String applicationName; ... @ReadOperation public WebEndpointResponse<Map> info() {
당신은 또한 URL을 다시 매핑 할 수 있다는 것을 잊지 마십시오. 내 경우에는 내가 경로에 / / 건강 / 상태를 선호 / 액츄에이터를 원하지 않는다 :
management.endpoints.web.base-path=/ management.endpoints.web.path-mapping.info=status
내가 / 건강 기본값이 중첩 된 구조를하지 않기 때문에 내가 / 정보를 선호하는 또 다른 이유는 다음과 같습니다
{ "status": { "status": "ON",
-
==============================
3.봄 부팅 2.X 이후
봄 부팅 2.X 이후
액추에이터의 개념은 봄 부팅 2.X에서 변경했지만 여전히 HealthIndicator을 구현하거나 반응 응용 프로그램 ReactiveHealthIndicator을 위해 쉽게 사용자 정의 상태 검사를 추가 할 수 있습니다 yuranos87 @에서 언급 한 바와 같이 :
@Component public class CacheHealthIndicator implements HealthIndicator { @Override public Health health() { long result = checkSomething()) if (result <= 0) { return Health.down().withDetail("Something Result", result).build(); } return Health.up().build(); }
또는
@Component public class CacheHealthIndicator implements ReactiveHealthIndicator { @Override public Mono<Health> health() { return Mono.fromCallable(() -> checkSomething()) .map(result -> { if (result <= 0) { return Health.down().withDetail("Something Result", result).build(); } return Health.up().build(); }); } }
또한 추가하거나 @Endpointor @EndpointWebExtension있는 모든 엔드 포인트를 확장 할 수 있습니다. 여기에 끝점은 정보, 건강과 더 많은입니다. 그래서 당신은 @Endpoint를 사용하여 사용자 지정 상태 검사를 추가 할 수 있지만 HealthIndicator 함께 할 훨씬 쉽게입니다.
당신은 봄 부트 문서에 사용자 정의 상태 검사 및 사용자 정의 엔드 포인트에 대한 자세한 정보를 찾을 수 있습니다.
from https://stackoverflow.com/questions/44849568/how-to-add-a-custom-health-check-in-spring-boot-health by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JPA는 Exception.class 활성화를 위해 여러 기관이 때 봄 @Transactional 내부 및 롤백 롤백하지로 저장 (0) | 2019.09.25 |
---|---|
[SPRING] 테이블 'DBNAME.hibernate_sequence은'존재하지 않는 (0) | 2019.09.23 |
[SPRING] Spring + Maven 종료 코드 1로 Java를 실행할 수 없습니다. (0) | 2019.09.14 |
[SPRING] 스프링 배치는 테이블을 생성하기 위해 커스텀 데이터 소스를 사용하지 않습니다 (0) | 2019.09.14 |
[SPRING] JNDI와 Spring을 사용하여 WildFly 10.1.0. Final ActiveMQ Artemis에 어떻게 연결합니까? (0) | 2019.09.14 |