Консолидация панелей¶
После принципа "одна панель — один вопрос" легко впасть в другую крайность: создавать по отдельной панели на каждый микросервис, каждый сервер или каждый инстанс базы данных. Это путь к сотням панелей. А сотня панелей — это бесконечный скроллинг и отсутствие обзора.
Группировка вместо размножения¶
Аналогия: листать профили знакомств в приложении — долго и утомительно. А прийти на вечеринку и увидеть сразу десять человек — эффективнее и быстрее, сразу замечаешь общую картину. Консолидация панелей — та же идея.
Вместо:
[Сервер-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 — отличные друзья консолидации.
Далее: Логическая группировка