mpHealth-1.0 기능을 구성하고 HealthCheck API(Application
Programming Interface)를 구현하여 마이크로서비스에 상태 검사를 제공합니다.
이 태스크 정보
상태 검사는 마이크로서비스에서 제공하는
MicroProfile 상태 API 구현입니다.
상태 검사를 사용하여 서비스의 상태를 평가하십시오. 이러한 검사는 주로 컨테이너
환경(예:
Kubernetes의 활동성 검사)에서 머신 대 머신
메커니즘으로 수행됩니다.
mpHealth-1.0 기능은 설치된
마이크로서비스의 2진 상태(
UP 또는
DOWN)를
나타내는
/health 엔드포인트를 제공합니다.
마이크로서비스는 0개 이상의 상태 검사를 제공할 수 있으며, 서버의 전체 상태는
각 상태 검사에서 상태를 집계한 것입니다. 전체 결과는 모든 상태 검사가 정상적인
결과를 보고하는 경우에만 긍정적입니다.
프로시저
- 기능을 구성하십시오. 기능을 추가하도록 server.xml 파일을
업데이트하십시오.
<featureManager>
<feature>mpHealth-1.0</feature>
</featureManager>
- API를 사용하여 수행하려는 상태 검사를 제공하십시오.
@FunctionalInterface
public interface HealthCheck {
HealthCheckResponse call();
}
다음 예제는 상태 검사에 API를 사용하는 방법을 표시합니다.
@Health
@ApplicationScoped
public class MyCheck implements HealthCheck {
@Override
public HealthCheckResponse call() {
return HealthCheckResponse.named("MyCheck")
.withData("key1", "val1")
.withData("key2", "val2")
.up()
.build();
}
}
/health 엔드포인트에 대한 HTTP 요청은
다음 상태 코드 중 하나를 갖는 응답을 리턴합니다. - 코드 200은 상태 검사 결과가 긍정적임을 나타냅니다.
- 코드 503은 전체 결과가 부정적임을 나타냅니다.
- 코드 500은 시스템이 상태 검사 요청을 처리할 수 없음을 나타냅니다.
이 코드는 프로시저의 오류를 나타낼 수 있습니다.
응답에는 상태 검사의 세부사항이 포함된
JSON(JavaScript Object Notation)
페이로드도 포함되어 있습니다. 다음 코드는 정상적인 결과의 예를 표시합니다.
{
"outcome": "UP",
"checks": [
{
"name": "MyCheck",
"state": "UP",
"data: {
"key": "value",
"key1": "val1",
"key2": "val2"
}
}
]
}
다음 코드는 비정상적인 결과의 예를 표시합니다.
{
"outcome": "DOWN",
"checks": [
{
"name": "check1",
"state": "UP"
},
{
"name": "check2",
"state": "DOWN"
}
]
}
기능을 구성했지만 상태 검사를 제공하지 않으면 시스템은 코드 200으로
응답합니다. 페이로드에는 UP의 긍정적 결과와 빈 검사 세트가
포함되어 있습니다.