JavaRush /Курси /Модуль 5. Spring /Лекція 259: Використання Grafana для візуалізації метрик

Лекція 259: Використання Grafana для візуалізації метрик

Модуль 5. Spring
Рівень 20 , Лекція 8
Відкрита

Ми вже познайомилися з концепцією Observability і тим, як вона впливає на підтримку та працездатність мікросервісів. Ми дізналися про розподілену трасування за допомогою Zipkin, налаштували Sleuth для автоматичного додавання ідентифікаторів трасування і перевірили, як запити перетинають межі мікросервісів. Крім того, ми вивчили ELK-стек для централізованого логування і почали інтеграцію Prometheus для збору метрик. Тепер настав час "десерту" — візуалізації всіх зібраних даних за допомогою Grafana. Бо ж ніяка Observability не буде повною без красивих графіків!


Чому Grafana?

Ми вже трохи розбиралися з Grafana, але настав час освіжити знання про цю платформу і навчитися працювати з нею в контексті мікросервісної архітектури.

Уявіть, що ви зібрали всі метрики і логи зі своїх мікросервісів. Вони акуратно лежать у базі даних, в Prometheus або Elasticsearch. І от ви сідаєте аналізувати... через командний рядок.

Як би ви не любили консоль, аналіз тисяч рядків тексту — це не найцікавіше заняття. Grafana рятує нас, надаючи потужні інструменти для візуалізації даних. Це як Maps для даних: замість нудних координат на папері — яскраві мапи з маршрутом.

Особливості Grafana:

  • Підключення до безлічі джерел даних: Prometheus, Elasticsearch, MySQL і навіть Google Sheets.
  • Гнучкість дашбордів: ви самі вирішуєте, як і що відображати.
  • Потужні метрики: діаграми, гістограми, таблиці.
  • Налаштовувані алерти: отримуйте сповіщення про проблеми раніше, ніж вони стануть критичними.
  • Підтримка плагінів і кастомних візуалізацій.

Встановлення Grafana

Grafana доступна у вигляді пакетів, Docker-образів і навіть хмарних рішень. Але ми підемо шляхом "справжнього розробника" і зробимо встановлення через Docker, бо це швидко і просто.

Запускаємо Grafana з Docker

Переконайтеся, що Docker встановлений на вашій машині. Потім виконайте наступну команду:

docker run -d -p 3000:3000 --name=grafana grafana/grafana
  • -d запускає контейнер у фоновому режимі.
  • -p 3000:3000 перенаправляє порт 3000 хост-машини на порт 3000 контейнера.
  • Контейнер готовий! Grafana тепер доступна в браузері за адресою http://localhost:3000.

Вхід в Grafana

Відкрийте браузер і перейдіть на http://localhost:3000. За замовчуванням логін і пароль:

  • Логін: admin
  • Пароль: admin

Під час першого входу Grafana попросить вас змінити пароль. Будь ласка, змініть його, щоб не забути, що тут зібралися справжні професіонали.


Інтеграція Grafana з Prometheus

Ми налаштували Prometheus раніше, щоб отримувати метрики зі Spring Boot через Actuator. Тепер наше завдання — підключити Prometheus як джерело даних у Grafana.

Крок 1: Додаємо джерело даних

  1. Зайдіть у Grafana.
  2. Перейдіть у меню (іконка "шестерні" ліворуч) → Data SourcesAdd data source.
  3. У списку джерел знайдіть Prometheus.
  4. Вкажіть URL вашого Prometheus сервера (зазвичай це http://localhost:9090).
  5. Натисніть Save & Test. Якщо все налаштовано правильно, ви побачите повідомлення "Data source is working".

Крок 2: Створення першого дашборду

Тепер настав час додати трохи магії візуалізації:

  1. Перейдіть у головне меню і оберіть DashboardNew Dashboard.
  2. Натисніть Add new panel.
  3. У вікні, що відкрилось, оберіть метрику, яку хочете візуалізувати. Наприклад, почнемо з http_server_requests_seconds_count (кількість запитів у вашому Spring Boot додатку).
  4. Оберіть тип графіка (наприклад, "Time series" для метрик, що відображають зміну в часі).
  5. Налаштуйте параметри відображення і збережіть зміни.

Реалізація красивих графіків

Розповімо більше деталей про те, як можна максимально ефективно використовувати Grafana!

Типи візуалізацій

Grafana пропонує безліч типів графіків:

  • Time series: графіки змін метрик у часі.
  • Table: таблиці для представлення даних у табличному форматі.
  • Gauge (шкали): візуалізація числових показників, наприклад, "завантаження CPU у відсотках".
  • Heatmap: теплокарти для відображення щільності подій.

Приклад: моніторинг HTTP-запитів

  1. Зайдіть у ваш дашборд.
  2. Додайте новий графік.
  3. У полі Query виберіть запит до Prometheus:
    sum(rate(http_server_requests_seconds_count[5m])) by (status)
    
    Це покаже кількість HTTP-запитів за останні 5 хвилин, згрупованих за статусами (наприклад, 200, 404).
  4. Оберіть тип візуалізації "Bar chart".
  5. Збережіть панель. Voilà! Тепер у вас є графік розподілу HTTP-запитів.

Алерти в Grafana

Не тільки візуалізація, але й алерти — це ключова частина моніторингу. Grafana може надсилати повідомлення в Slack, Email, Telegram та інші системи сповіщень.

Приклад: сповіщення про пік запитів

Припустимо, ви хочете налаштувати алерт, якщо кількість запитів перевищує 100 за останні 5 хвилин.

  1. Відкрийте панель, яку ви створили для моніторингу HTTP-запитів.
  2. Натисніть "Edit" панелі → вкладка AlertCreate Alert.
  3. Налаштуйте параметри умови. Наприклад:
    • Вираз: sum(rate(http_server_requests_seconds_count[5m])) > 100
    • Інтервал перевірки: кожну 1 хвилину.
  4. Вкажіть канал сповіщення. Наприклад, Slack:
    • Перейдіть у Contact Points в налаштуваннях Grafana.
    • Додайте новий контакт, обравши Slack і надавши Webhook URL.

Дашборди для мікросервісів

Давайте подумаємо, а що ще нам потрібно моніторити в мікросервісах? Ось кілька ідей, які можуть надихнути вас:

  • HTTP помилки: percentage запитів з кодами 4xx і 5xx (count(status_code >= 400)/count(all_requests)).
  • Завантаження CPU і пам'яті: використовуйте метрики JVM, які надає Spring Boot Actuator.
  • Дані про латентність (затримки): середній час виконання запитів (avg(http_server_requests_seconds_sum / http_server_requests_seconds_count)).

Інтеграція з іншими джерелами даних

Grafana — це не тільки Prometheus. Ви можете підключити додаткові джерела, щоб створити єдиний дашборд:

  • Elasticsearch: для відображення логів.
  • MySQL/Postgres: для прямого запиту і візуалізації даних з БД.
  • Google Analytics: якщо вам потрібні дані про користувацький трафік.

Використовуючи всі ці можливості, ви можете створити потужний інструмент наблюдаємості для своїх мікросервісів.


Питання, які часто виникають

1. Чи можна налаштувати Grafana в production? Так, Grafana активно використовується в production-середовищах. Потрібно забезпечити безпеку доступу (наприклад, задати складний логін/пароль) і використовувати SSL (можна налаштувати через зворотний проксі, наприклад, Nginx).

2. Grafana гальмує при великій кількості запитів, що робити? Обмежте частоту запитів. Використовуйте агрегації в Prometheus, щоб зменшити обсяг даних, який передається Grafana.

3. Коли варто використовувати алерти? Алерти потрібно налаштовувати тільки для критичних метрик. Надто багато сповіщень зробить алерти марними.


Отже, ми познайомилися з Grafana — інструментом, який перетворює нудні цифри на гарні візуалізації. Тепер ваш моніторинг не тільки корисний, але й тішить око!

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