Ми вже знаємо, що 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
- Увійди в інтерфейс Grafana.
- Перейдіть у Configuration > Data Sources.
- Натисни "Add data source" і обери Prometheus.
- У полі URL введи адресу твого Prometheus-інстансу (наприклад,
http://localhost:9090). - Натисни Save & Test, щоб переконатися, що з'єднання успішне.
Створення дашборда
Тепер давай створимо перший дашборд, щоб відстежувати, наприклад, використання пам'яті і завантаження процесора.
Крок 1: створіть новий дашборд 1. Перейдіть у Dashboards і оберіть New Dashboard. 2. Натисніть Add New Panel, щоб додати графік.
Крок 2: налаштуйте панель 1. У полі Query введіть запит у форматі PromQL (мовою запитів Prometheus). Наприклад:
process_cpu_usage
Цей запит покаже завантаження CPU для нашого додатка.
- Встанови тип графіка (лінія, гістограма тощо) і інші параметри.
- Додай ще одну панель, щоб показати використання пам'яті:
jvm_memory_used_bytes - Збережи зміни.
Крок 3: Переглянь дашборд Тепер ти можеш насолоджуватися гарною візуалізацією! Ось приклад, як це може виглядати:
+------------------------------------+
| Memory Usage | CPU Usage |
+------------------------------------+
| JVM: 512 MB | CPU: 12% |
| ...dynamic graphs...| ...updates...|
| | |
+------------------------------------+
5. Налаштування оповіщень
Grafana дозволяє налаштувати оповіщення, щоб при досягненні критичних значень надсилати повідомлення (наприклад, на пошту або в Slack). Ось як це зробити:
- Відкрий будь-яку панель на дашборді.
- Клікни по панелі і вибери Edit > Alerts.
- Додай нову політику оповіщення. Наприклад, створи правило: якщо
process_cpu_usage > 80%, то надіслати повідомлення. - Налаштуй кінцеву точку для повідомлень (наприклад, email або Slack).
6. Практичне завдання
Щоб краще зрозуміти процес, виконай наступне завдання:
- Налаштуй Prometheus для збору метрик твого Spring Boot додатка.
- Підключи Grafana до Prometheus і створи дашборд з двома панелями:
- Використання пам'яті JVM.
- Завантаження CPU.
- Налаштуй політику оповіщення, щоб отримувати повідомлення при перевищенні завантаження CPU більше ніж 90%.
Приклад результату: твій Grafana дашборд з живими графіками метрик.
Тепер, коли в тебе є інтеграція між Spring Boot Actuator, Prometheus і Grafana, життя оператора стане простішим, а додаток — прозорішим. Усього лиш трохи налаштувань — і ти на вершині світу моніторингу!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ