Розробка кастомних Grafana-дашбордів для інфраструктури
Ми розробляємо кастомні дашборди Grafana, які прискорюють діагностику інцидентів у 5 разів порівняно зі стандартними шаблонами. На одному з проєктів черговий інженер витрачав до 15 хвилин на пошук метрики iowait у стандартному Node Exporter Full — після впровадження кастомного дашборду час скоротився до 2 хвилин. Це не прикраса, а робочий інструмент для швидкої реакції. Наша команда має понад 5 років досвіду в продакшені — сертифікації з Kubernetes та Prometheus підтверджують компетенції.
Зв'яжіться з нами для оцінки вашої інфраструктури — ми запропонуємо оптимальну структуру дашбордів і розрахуємо терміни під ваш стек.
Типовий layout для хостового дашборду складається з чотирьох блоків: зведення по хосту (uptime, CPU, RAM, версія ядра), навантажувальні показники (CPU, RAM, disk IOPS, network), файлові системи з порогами та деталізація (top‑10 процесів, мережеві помилки, latency). Такий дашборд відповідає на три питання за 10 секунд: що навантажено, наскільки критично, з якого часу.
На відміну від стандартних шаблонів, де панелі розміщені без логіки, наш підхід економить до 30% часу на діагностику. Ми використовуємо змінні, щоб один дашборд підходив для всіх хостів, і налаштовані алерти, щоб не пропускати критичні зміни.
Як побудувати дашборд, який дійсно допомагає при інцидентах?
Хороший дашборд відповідає на три питання за 10 секунд: що навантажено, наскільки критично, з якого часу. Все інше — в drill‑down панелях. Кастомний дашборд у 5 разів краще стандартного для пошуку першопричини.
Порівняння зі стандартними рішеннями:
| Параметр | Стандартний дашборд (Node Exporter Full) | Кастомний дашборд |
|---|---|---|
| Час пошуку метрики | 5-15 хвилин | 10-30 секунд |
Наявність iowait |
часто прихований серед 40 панелей | винесений в основну панель |
| Адаптація під конкретний сценарій | неможлива | гнучке налаштування |
| Підтримка змінних | є, але не завжди релевантна | налаштовані під інфраструктуру |
Використання кастомного дашборду прискорює пошук першопричини в 5 разів порівняно з набором стандартних панелей. В одному з проєктів ми скоротили MTTR на 40% після впровадження такого дашборду. Економія часу чергового склала 1,5 години на тиждень.
Приклад: типовий кейс економії часу
Інженеру потрібно знайти причину зростання latency на диску. Стандартний дашборд показує 50 панелей — пошук метрики займає 10 хвилин. На кастомному дашборді метрика `iowait` та `disk latency` винесені на першу сторінку — діагностика займає 1 хвилину. Економія: 9 хвилин на інцидент, при 10 інцидентах на тиждень — 1,5 години зекономленого часу чергового.PromQL для інфраструктурних метрик
Кілька запитів, які ми використовуємо найчастіше. CPU iowait у відсотках (може приховувати вузьке місце сховища):
rate(node_cpu_seconds_total{mode="iowait", instance="$instance"}[5m]) * 100 Реальне використання RAM без урахування кешу (те, що реально зайнято застосунками):
( node_memory_MemTotal_bytes{instance="$instance"} - node_memory_MemFree_bytes{instance="$instance"} - node_memory_Buffers_bytes{instance="$instance"} - node_memory_Cached_bytes{instance="$instance"} ) / node_memory_MemTotal_bytes{instance="$instance"} * 100 Disk latency — середня затримка запису в мілісекундах:
rate(node_disk_write_time_seconds_total{instance="$instance", device!~"dm-.*"}[5m]) / rate(node_disk_writes_completed_total{instance="$instance", device!~"dm-.*"}[5m]) * 1000 Регулярний вираз device!~"dm-.*" виключає device mapper пристрої — інакше дані задвоюються з фізичними дисками.
Змінні та template variables
Без змінних дашборд працює тільки для одного хоста. Зі змінними — один дашборд для всієї інфраструктури.
Variable instance типу Query:
label_values(node_uname_info{job="node-exporter"}, instance) Variable device із залежністю від вибраного хоста:
label_values(node_disk_io_time_seconds_total{instance="$instance"}, device) Відзначимо: коли інженер перемикає хост у верхньому dropdown — всі панелі перебудовуються під вибраний інстанс. Це і є сенс кастомного дашборду.
Чому варто зберігати дашборди як код?
Дашборди в Grafana експортуються в JSON. Правильна практика — зберігати JSON в git‑репозиторії та завантажувати через provisioning. При будь-якій зміні — PR, рев'ю, merge, автоматичне оновлення. Ніякого «хтось випадково зламав дашборд і немає відкату». Ми гарантуємо, що всі дашборди проходять рев'ю перед завантаженням.
Grafana Labs рекомендує такий підхід для промислових середовищ.
Межа між «готов» і «не готов» у дашборду: якщо інженер, який його не робив, може діагностувати інцидент без питань «а що ця панель показує?» — значить, готов.
Порівняння підходів зберігання:
| Аспект | JSON в Grafana (без коду) | JSON в git (як код) |
|---|---|---|
| Відкат змін | тільки руками | git revert |
| Рев'ю | немає | обов'язкове через PR |
| Історія змін | немає | повна історія комітів |
Процес роботи
- Аналітика: вивчаємо вашу інфраструктуру, виділяємо ключові метрики, узгоджуємо структуру дашбордів.
- Проектування: створюємо макети, визначаємо змінні та layout.
- Реалізація: пишемо PromQL, налаштовуємо панелі, будуємо drill‑down зв'язки.
- Тестування: перевіряємо на реальних даних, коригуємо пороги та відображення.
- Деплой: публікуємо дашборди через provisioning, підключаємо до git‑репозиторію. Використовуємо Grafana provisioning для автоматизації.
Терміни та обсяг роботи
- Простий хостовий дашборд (CPU/RAM/Disk/Net для одного типу сервера) — 0,5–1 день зі змінними та provisioning.
- Дашборд інфраструктури кластера (Kubernetes nodes overview, PVC usage, network namespaces) — 1–2 дні.
- Набір пов'язаних дашбордів (overview → drill‑down по компоненту → drill‑down по інстансу) — 2–3 дні включаючи узгодження структури з командою.
Замовте розробку дашбордів під ключ — отримайте консультацію по вашому проекту. Ми оцінимо інфраструктуру та запропонуємо рішення.







