Перейти к содержанию

Консолидация панелей


После принципа "одна панель — один вопрос" легко впасть в другую крайность: создавать по отдельной панели на каждый микросервис, каждый сервер или каждый инстанс базы данных. Это путь к сотням панелей. А сотня панелей — это бесконечный скроллинг и отсутствие обзора.


Группировка вместо размножения

Аналогия: листать профили знакомств в приложении — долго и утомительно. А прийти на вечеринку и увидеть сразу десять человек — эффективнее и быстрее, сразу замечаешь общую картину. Консолидация панелей — та же идея.

Вместо:

[Сервер-1 CPU] [Сервер-2 CPU] ... [Сервер-N CPU]

делаем:

[CPU по всем серверам]   (один запрос с группировкой по instance)

Запрос:

avg by(instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m]))

Grafana отобразит одну панель с N линиями. Каждая — отдельный сервер.


Что консолидировать

  • По хостам — CPU, Memory, Disk, Network.
  • По микросервисам — здесь значения переменной $service или $deployment. Тогда вы сможете отфильтровать по одному сервису через Filter или через легенду.
  • По эндпоинтам — когда есть 20 HTTP-эндпоинтов, не нужно 20 панелей с RPS. Одна панель с sum by(endpoint) rate(...).


Когда НЕ консолидировать

Когда при группировке на один zoom метрики перестают быть читаемы. Например, 300 хостов на одном графике — нечитаемо: линии ложатся друг на друга. Тут на помощь приходят счётчики: вместо Time Series — Heatmap или Bar Gauge "Top 5 CPU Hosts".

Для тепловой карты загруженности хостов:

topk(5, avg by(instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])))

Совет: topk + bottomk — отличные друзья консолидации.



Далее: Логическая группировка