JavaRush /Курсы /Модуль 5. Spring /Лекция 117: Интеграция Actuator с мониторинговыми система...

Лекция 117: Интеграция Actuator с мониторинговыми системами (Prometheus, Grafana)

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

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

Вот где на сцену выходят Prometheus — система для сбора и хранения метрик, а также Grafana — инструмент для визуализации данных. Prometheus интегрируется с Actuator для получения метрик, а Grafana помогает визуализировать их на дашбордах.

Эти инструменты дадут вам возможность:

  • Консолидировать мониторинг всех приложений в одном месте.
  • Отслеживать долгосрочные тренды по производительности.
  • Получать уведомления о сбоях или превышении критических значений.

Так что — пристёгивайте ремни — мы отправляемся в мир интеграций!


Настройка Prometheus

Установка Prometheus

Для начала, нам нужно установить Prometheus. Если он ещё не установлен, вы можете использовать Docker для быстрого развертывания:

docker run -d --name=prometheus --network=host prom/prometheus

Подготовка Spring Boot приложения

Prometheus собирает метрики через специальный эндпоинт /actuator/prometheus. Чтобы сделать этот эндпоинт доступным, нам нужно подключить библиотеку Micrometer Prometheus к нашему приложению.

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

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.10.3</version>
</dependency>

Для Gradle это будет выглядеть так:

implementation 'io.micrometer:micrometer-registry-prometheus:1.10.3'

После этого, в настройках application.properties укажите, что эндпоинт Prometheus должен быть включён:

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

Запустив приложение, вы должны увидеть, что эндпоинт /actuator/prometheus теперь доступен.


2.3 Настройка Prometheus для сбора метрик

Теперь, когда эндпоинт настроен, необходимо сообщить Prometheus, откуда забирать метрики. Для этого в конфигурационном файле prometheus.yml добавьте ваш Spring Boot сервис в список targets:

scrape_configs:
  - job_name: 'spring-boot-app'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8080']
        labels:
          service: 'my-spring-boot-app'

Нажмите на паузу и проверьте: если Prometheus успешно подключился, вы сможете увидеть метрики, зайдя на страницу http://localhost:9090.


3. Почему Grafana?

Хотя Prometheus и хорош для сбора данных, его интерфейс сложно назвать дружелюбным. Для визуализации мы будем использовать Grafana — инструмент, предоставляющий красивые интерактивные дашборды. С Grafana вы сможете:

  • Создавать дашборды с графиками, гистограммами, таблицами и другими видами данных.
  • Настраивать оповещения (например, при превышении порога загрузки CPU).
  • Анализировать данные в масштабе секунд до месяцев.

Настройка Grafana

Установка Grafana

Если Grafana ещё не установлена, снова-таки, будет удобнее воспользоваться услугами Docker:

docker run -d -p 3000:3000 grafana/grafana

Grafana будет доступна по адресу http://localhost:3000.

Логин и пароль по умолчанию: admin/admin.


Подключение Prometheus к Grafana

  1. Войдите в интерфейс Grafana.
  2. Перейдите в Configuration > Data Sources.
  3. Нажмите "Add data source" и выберите Prometheus.
  4. В поле URL введите адрес вашего Prometheus-инстанса (например, http://localhost:9090).
  5. Нажмите Save & Test, чтобы убедиться, что соединение успешно.

Создание дашборда

Теперь давайте создадим первый дашборд, чтобы отслеживать, например, использование памяти и загрузку процессора.

Шаг 1: создайте новый дашборд 1. Перейдите в Dashboards и выберите New Dashboard. 2. Нажмите Add New Panel, чтобы добавить график.

Шаг 2: настройте панель 1. В поле Query введите запрос в формате PromQL (язык запросов Prometheus). Например:

process_cpu_usage

Этот запрос покажет загрузку CPU для нашего приложения.

  1. Установите тип графика (линия, гистограмма и т.д.) и другие параметры.
  2. Добавьте ещё одну панель, чтобы показать использование памяти:
    jvm_memory_used_bytes
    
  3. Сохраните изменения.

Шаг 3: Просмотрите дашборд Теперь вы можете наслаждаться красивой визуализацией! Вот пример, как это может выглядеть:


+------------------------------------+
| Memory Usage       | CPU Usage     |
+------------------------------------+
| JVM: 512 MB        | CPU: 12%      |
| ...dynamic graphs...| ...updates...|
|                    |               |
+------------------------------------+

5. Настройка оповещений

Grafana позволяет настроить оповещения, чтобы при достижении критических значений отправлять уведомления (например, на почту или в Slack). Вот как это сделать:

  1. Откройте любую панель на дашборде.
  2. Кликните по панели и выберите Edit > Alerts.
  3. Добавьте новую политику оповещения. Например, создайте правило: если process_cpu_usage > 80%, то отправить сообщение.
  4. Настройте конечную точку для уведомлений (например, email или Slack).

6. Практическое задание

Чтобы лучше понять процесс, выполните следующее задание:

  1. Настройте Prometheus для сбора метрик вашего Spring Boot приложения.
  2. Подключите Grafana к Prometheus и создайте дашборд с двумя панелями:
    • Использование памяти JVM.
    • Загрузка CPU.
  3. Настройте политику оповещения, чтобы получать уведомления при превышении загрузки CPU более чем на 90%.

Пример результата: ваш Grafana дашборд с живыми графиками метрик.


Теперь, когда у вас есть интеграция между Spring Boot Actuator, Prometheus и Grafana, ваша жизнь оператора станет проще, а приложение — прозрачнее. Всего-то и нужно, что немного настройки, и вы на вершине мира мониторинга!

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ