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

Лекція 117: Інтеграція Actuator з системами моніторингу (Prometheus, Grafana)

Модуль 5. Spring
Рівень 19 , Лекція 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, життя оператора стане простішим, а додаток — прозорішим. Усього лиш трохи налаштувань — і ти на вершині світу моніторингу!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ