В этой статье мы объясним, как настроить и настроить конечную точку работоспособности в приложении 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(Setstatuses) { 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”