JavaRush /Курсы /Модуль 5. Spring /Лекция 111: Введение в Spring Boot Actuator

Лекция 111: Введение в Spring Boot Actuator

Модуль 5. Spring
12 уровень , 0 лекция
Открыта

Программирование — это не только написание кода и фиксация багов. Это ещё и мониторинг приложений в реальном времени, чтобы понять, кто тормозит систему, какие ресурсы работают с перегрузкой и куда исчезают драгоценные байты памяти в JVM. Представьте, что вы — пилот самолёта, и вам нужно видеть приборную панель вашего корабля, иначе это будет полёт вслепую. И вот тут приходит Spring Boot Actuator! Это инструмент, который предоставляет широкие возможности для мониторинга и управления Spring Boot-приложениями. Он позволяет:

  • Отслеживать состояние вашего приложения.
  • Получать ключевые метрики (CPU, память, производительность запросов).
  • Проверять операционные характеристики системы.
  • Получать доступ к диагностике и информации о состоянии приложения.

Как интегрировать Actuator в Spring Boot проект?

Для начала нужно добавить зависимость Actuator в ваш проект. Ведь Spring Boot позволяет вам включать готовые инструменты через Maven или Gradle. Всё, как всегда, максимально просто.

Добавление зависимости Maven: Добавьте следующую зависимость в ваш pom.xml:


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Добавление зависимости в Gradle: Если вы используете build.gradle, то включите:


implementation 'org.springframework.boot:spring-boot-starter-actuator'

Готово! Теперь Actuator уже встроен в ваше приложение.


Обзор стандартных эндпоинтов

Spring Boot Actuator предоставляет множество готовых эндпоинтов для мониторинга и управления вашим приложением. Вот несколько самых популярных:

Эндпоинт Описание
/health Отображает состояние приложения (здоров или не здоров)
/info Показывает информацию о приложении, например, версию, описание
/metrics Показывает метрики, такие как CPU, память, выполнение запросов
/env Содержит свойства среды (environment variables)
/loggers Предоставляет информацию о текущих настройках логирования
/beans Выводит список всех бинов, зарегистрированных в вашем контексте
/threaddump Демп состояния потоков внутри JVM, который помогает находить блокировки

Теперь представьте: вы запускаете приложение, заходите на http://localhost:8080/actuator/health, а там вам говорят волшебное слово UP. Это значит, что ваше приложение работает. Ура!


Включение и настройка Actuator

Как и всё в Spring Boot, Actuator удобно конфигурируется. Для этого используются популярные файлы для управления конфигурацией: application.properties или application.yml.

Настройка базового пути эндпоинтов: по умолчанию все эндпоинты Actuator находятся по пути /actuator. Но что, если вы хотите изменить его, чтобы, например, скрыть их от посторонних глаз? Просто укажите новый путь в application.properties:


management.endpoints.web.base-path=/management

Теперь эндпоинты будут доступны по пути /management.

Включение и отключение эндпоинтов: Возможность включать или отключать определённые эндпоинты — это тоже часть магии Actuator. Например:


management.endpoint.health.enabled=true
management.endpoint.beans.enabled=false

Таким образом, вы включаете /health и отключаете /beans.

Какие эндпоинты доступны? Для этого можно настроить общий доступ (по умолчанию доступны только некоторые эндпоинты):


management.endpoints.web.exposure.include=*

Или разрешить доступ только к 2-3 избранным:


management.endpoints.web.exposure.include=health,info

Это полезно, когда вы хотите минимизировать риски, связанные с безопасностью.


Краткий практический пример

Давайте включим Actuator и проверим его функциональность на простом Spring Boot приложении. Создадим учебное REST API и добавим Actuator для его мониторинга.

Шаг 1: Добавим зависимость в pom.xml (или build.gradle):


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Шаг 2: Настроим файл application.properties:


management.endpoints.web.exposure.include=health,info,metrics
management.endpoint.health.show-details=always

Шаг 3: Создаём REST API: Создадим стандартный HelloController:


@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Привет, Spring Boot Actuator!";
    }
}

Шаг 4: Запустим приложение: После запуска приложения, заходим в браузер или Postman и открываем эндпоинты:

  • http://localhost:8080/actuator/health — состояние приложения.
  • http://localhost:8080/actuator/info — информация о приложении.
  • http://localhost:8080/actuator/metrics — метрики CPU, памяти и запросов.

Результаты:
На /health вы увидите следующую магию:


{
  "status": "UP",
  "details": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 500000000000,
        "free": 400000000000,
        "threshold": 10485760
      }
    }
  }
}

Это означает, что ваше приложение работает, а ваш диск ещё не заполнен котиками.


Ключевые особенности Actuator

  1. Легкость интеграции: достаточно добавить одну зависимость.
  2. Гибкость настроек: можно включать только нужные эндпоинты.
  3. Расширяемость: легко добавлять кастомные метрики.
  4. Эффективная диагностика: помогает быстро понять, почему приложение "глючит".
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ