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

Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки