Spring Boot Actuator: написание пользовательских HealthIndicators
Чтобы предоставить пользовательскую информацию о работоспособности (health), вы можете зарегистрировать компоненты Spring, которые реализуют интерфейс HealthIndicator. Вам необходимо предоставить реализацию метода health() и вернуть ответ Health. Ответ о работоспособности должен включать статус и при желании может включать дополнительные сведения, которые будут отображаться. В следующем коде показан пример реализации HealthIndicator:
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class MyHealthIndicator implements HealthIndicator {
@Override
public Health health() {
int errorCode = check(); // выполняем определенную проверку работоспособности
if (errorCode != 0) {
return Health.down().withDetail("Error Code", errorCode).build();
}
return Health.up().build();
}
}
Идентификатором данного HealthIndicator является имя компонента без суффикса HealthIndicator, если он существует. В предыдущем примере информация о работоспособности доступна в записи с именем my.
В дополнение к предопределенным типам состояния Spring Boot Health также может возвращать пользовательский статус, который представляет новое состояние системы. В таких случаях также необходимо предоставить пользовательскую реализацию интерфейса StatusAggregator, или реализацию по умолчанию необходимо настроить с помощью свойства конфигурации management.endpoint.health.status.order.
Например, предположим, что новый статус с кодом FATAL используется в одной из ваших реализаций HealthIndicator. Чтобы настроить порядок серьезности (severity order), добавьте следующее свойство в свойства своего приложения:
management.endpoint.health.status.order=fatal,down,out-of-service,unknown,up
Код состояния HTTP в ответе отражает общее состояние работоспособности (например, UP отображается на 200, а OUT_OF_SERVICE и DOWN на 503). Вы также можете зарегистрировать пользовательские сопоставления состояний, если вы получаете доступ к конечной точке health по HTTP. Например, следующее свойство сопоставляет FATAL с 503 (service unavailable):
management.endpoint.health.status.http-mapping.fatal=503
Если вам нужно больше контроля, вы можете определить свой собственный компонент HttpCodeStatusMapper.
В следующей таблице показаны сопоставления состояния по умолчанию для встроенных статусов:
Статус | Сопоставление |
---|---|
DOWN |
SERVICE_UNAVAILABLE (503) |
OUT_OF_SERVICE |
SERVICE_UNAVAILABLE (503) |
UP |
По умолчанию сопоставление отсутствует, поэтому http статус 200 |
UNKNOWN |
По умолчанию сопоставление отсутствует, поэтому http статус 200 |
Читайте также:
- Spring Boot Actuator: конечные точки (endpoints)
- Spring Boot Actuator: информация о работоспособности (health endpoint)
- Spring Boot Actuator: автоконфигурируемые HealthIndicators
Комментарии
Отправить комментарий