Рубрики
Без рубрики

Пользовательский агрегатор работоспособности в Spring Boot 2

В этой статье мы объясним, как настроить и настроить конечную точку работоспособности в Spring… С тегами java, spring, spring boot, health.

В этой статье мы объясним, как настроить и настроить конечную точку работоспособности в приложении Spring Boot с помощью Spring Actuator.

содержание

  • Начало работы с приводом пружинного загрузчика
  • Индикатор здоровья против агрегатора здоровья
  • Настройка пружинного привода
  • Расширенная конфигурация
  • Дополнительные ресурсы

Код для этой демонстрации можно найти здесь:

psideris89/весна-здоровье-агрегатор-демо

Приложение Spring boot, использующее пружинный привод и демонстрирующее пользовательский агрегатор работоспособности

Чтобы обновить версию gradle до 7.1

$ ./gradlew обертка.1

Начало работы с приводом пружинного загрузчика

Spring Boot Actuator является частью экосистемы Spring и предоставляет множество функциональных возможностей, включая возможность проверки работоспособности вашего приложения. Это часто называют конечной точкой работоспособности.

Индикатор здоровья против агрегатора здоровья

Индикатор работоспособности – это компонент, который возвращает состояние работоспособности (ВВЕРХ, ВНИЗ и т.д.). Этот компонент может выполнять действие, например, вызывать API или запрашивать базу данных или службу.

Агрегатор здоровья , как следует из названия, обрабатывает различные состояния здоровья (показатели здоровья) и выдает общее состояние здоровья для приложения.

Настройка пружинного привода

Создайте проект Spring Boot

Для демонстрации давайте создадим приложение Spring Boot со следующими спецификациями:

  • Проект: Градация
  • Язык: Java 16
  • Пружинный ботинок: 2.5.2 (или последняя версия)
  • Упаковка: банка
  • Зависимости: Пружинная сеть , Привод пружинной загрузки

Нажмите Generate , который загрузит zip-файл и распакует файл в каталог по вашему выбору.

Запустите приложение

Для запуска приложения вы можете либо использовать свой IDEA (если вы используете Intellij и Java 16, обязательно обновитесь до последней версии) или вы можете использовать свой терминал и оболочку Gradle (gradlew).

Перейдите в каталог, из которого вы извлекли zip-файл, и запустите его из терминала

$ ./gradlew bootRun

Просто добавив привод в зависимости проекта, вы включаете аудит работоспособности вашего приложения, который доступен из /actuator/health .

Поскольку мы запускаем приложение локально, нам необходимо получить доступ к http://localhost:8080/actuator/health и статус должен быть UP .

Создайте индикатор работоспособности

У вас есть возможность либо extent абстрактный показатель здоровья или реализовать в Индикатор здоровья . В нашем случае мы выбираем первое.

Убедитесь, что вы аннотируете свой индикатор работоспособности с помощью @Component (вы могли бы использовать другие аннотации стереотипов или @Configuration если вы предпочитаете) для того, чтобы Spring создал компонент.

Следующий индикатор создает случайное число и условно возвращает статус ВВЕРХ или ВНИЗ с подробной информацией об ошибке.

package com.psideris.springhealthaggregatordemo;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;

import java.util.Random;

@Component
public class NumberAppHealthIndicator extends AbstractHealthIndicator {

    @Override
    protected void doHealthCheck(Health.Builder builder) {
        int number = getRandomNumber();

        if (number > 5) {
            builder.up().build();
        } else {
            builder.down().withDetail("error", "Number was less than 5").build();
        }
    }

    private int getRandomNumber() {
        return new Random().ints(1, 10).findFirst().orElseThrow(() -> new RuntimeException("Failed to generate random number"));
    }
}

Имейте в виду, что вы можете создавать столько индикаторов работоспособности, сколько хотите, но Spring проверяет работоспособность изначально поддерживаемых служб (например, SQL DBS, MongoDB, elasticsearch и т.д.), Не требуя какой-либо настройки, Просто добавляя зависимость Actuator.

Создайте агрегатор работоспособности

Для агрегатора heath мы собираемся реализовать в Агрегатор статусов .

Как мы упоминали ранее, агрегатор накапливает состояние работоспособности по нескольким показателям, что означает, что вы можете определить логику, указывающую, когда приложение работает или не работает.

package com.psideris.springhealthaggregatordemo;

import org.springframework.boot.actuate.health.Status;
import org.springframework.boot.actuate.health.StatusAggregator;
import org.springframework.stereotype.Component;

import java.util.Set;

@Component
public class AppHealthAggregator implements StatusAggregator {

    @Override
    public Status getAggregateStatus(Set statuses) {
        boolean statusUp = statuses.stream().allMatch(s -> s.equals(Status.UP));

        return statusUp ? Status.UP : Status.DOWN;
    }
}

Расширенная конфигурация

Показать подробную информацию в состоянии здоровья

Для отображения дополнительных сведений вы можете добавить их в application.properties или application.yml файл.

// application.yml

management:
  endpoint:
    health:
      show-details: always
// application.properties

management.endpoint.health.show-details=always

Конечная точка работоспособности теперь должна содержать следующие сведения.

Настройте URL-адрес работоспособности

Чтобы настроить URL-адрес, отображающий состояние работоспособности, вы можете добавить следующие свойства в application.properties или application.yml файл.

// application.yml

management:
  endpoints:
    web:
      base-path: /api
      path-mapping:
        health: health-status
// application.properties

management.endpoints.web.base-path=/api
management.endpoints.web.path-mapping.health=health-status

Теперь URL-адрес, к которому нам нужно получить доступ, – это /api/health-status .

Доступ к статусу индивидуального показателя здоровья

По умолчанию при создании индикатора работоспособности он отображается в URL-адресе, соответствующем его имени (Spring удаляет суффикс HealthIndicator из URL-адреса).

Если вы укажете значение внутри аннотации, то URL-адрес изменится, чтобы отразить это. В нашем случае новый – это http://localhost:8080/actuator/health/numberService .

@Component("numberService")
public class NumberAppHealthIndicator extends AbstractHealthIndicator {

    ...

}

Дополнительные ресурсы

Вы можете найти больше о приводе пружинного загрузчика в официальной документации

Вы можете найти больше о приводе пружинного загрузчика в официальной документации

Оригинал: “https://dev.to/psideris89/custom-health-aggregator-in-spring-boot-2-1pnf”