Grafana 10.3: пробуем Canvas panel для топологии сети вместо плагинов-зомби
Grafana 10.3 вышла с Canvas panel в составе ядра и обновлённым Scenes API. Обновляем инсталляции клиентов и заменяем устаревшие плагины диаграмм на Canvas.
Grafana 10.3 выпущена с новым Canvas panel и улучшенным Scenes API для программных дашбордов, декабрь 2023
Grafana 10.3 вышла в начале декабря. Для нас это не просто очередная минорная версия - релиз закрывает несколько раздражающих вещей, которые давно мозолили глаза при работе с дашбордами сети у клиентов.
Главное новшество - Canvas panel переехал из «экспериментальных» в стабильные. Плюс существенно доработан Scenes API для тех, кто строит дашборды программно. Отдельно порадовали улучшения в алертинге и навигации по большим папкам.
Про Canvas и почему это важно
У нескольких клиентов под управляемой инфраструктурой исторически стоят дашборды с топологией сети - кто с кем связан, где узкие места, статус узлов в реальном времени. Строились они в разное время, и инструментарий был... разнообразный.
Часть дашбордов использует grafana-flowcharting - плагин на базе draw.io. Работает, но репозиторий не обновлялся больше года, в новых версиях Grafana периодически ломается что-нибудь несущественное, а при апгрейде платформы каждый раз нужно проверять совместимость. Ещё у одного клиента живёт natel-discrete-panel с кастомными SVG-картинками - вообще отдельная история, там своя мифология.
Canvas panel решает именно эту задачу: элементы на произвольном холсте с привязкой к данным, позиционирование абсолютное или по сетке, поддержка фоновых изображений. С версии 10.3 это официальная, поддерживаемая фича.
Обновление: как делали
Обновляли через пакетный менеджер, схема стандартная для наших инсталляций на базе Debian/Ubuntu:
apt update && apt install grafana
systemctl restart grafana-server
Для клиентов на Docker - пересобирали образ с тегом 10.3.x, прогоняли через staging. Обратная совместимость по дашбордам сохранилась - ни один из существующих не сломался при апгрейде. Это приятно, потому что переход с 9.x на 10.x в своё время потребовал ручной работы с тематиками и deprecated-панелями.
Что получилось с Canvas
Взяли один из клиентских дашбордов с топологией - три сегмента сети, несколько десятков узлов, трафик между ними, статус интерфейсов. Раньше это жило в flowcharting с XML-схемой, которую никто не хотел трогать лишний раз.
В Canvas воссоздали схему за несколько часов:
- Узлы - прямоугольники с именами хостов, цвет фона меняется по метрике (зелёный/жёлтый/красный через thresholds).
- Связи - линии между узлами, толщина пока фиксированная, но статус видно через цвет.
- Фоновая карта - загрузили PNG с физической планировкой, наложили элементы поверх.
Что хорошо: редактирование в браузере без XML, элементы перетаскиваются мышью, данные привязываются через стандартные data source запросы. Порог входа для правок заметно ниже, чем у flowcharting с его XML.
Что пока не дотягивает: линии между элементами не умеют гнуться по произвольным точкам - только прямые или с одним изломом. Для простых схем хватает, для сложной топологии с пересечениями - придётся думать над раскладкой. Ещё нет встроенного автолейаута - расставляешь руками.
Scenes API - для тех, кто пишет дашборды кодом
Параллельно посмотрели на Scenes API. Это относительно новый слой для программного создания дашбордов - актуально там, где дашборды генерируются автоматически по шаблону (например, один дашборд на каждого клиента с его переменными).
В 10.3 Scenes API стал заметно стабильнее: нормальная TypeScript-типизация, меньше нужно патчить внутренние интерфейсы вручную. Один из клиентов использует Grafonnet (Jsonnet-based) для генерации конфигов дашбордов - им это менее актуально, но для тех, кто смотрит в сторону React-плагинов, Scenes API теперь реалистичный путь.
Алертинг и мелочи
В 10.3 поправили несколько вещей в unified alerting, которые нас периодически беспокоили - в частности, поведение при временных пропаданиях данных (no data state). Теперь лучше разграничено, что считать «нет данных» и что «данные пришли, но значение нулевое». Звучит банально, но на дежурстве это разница между «что-то сломалось в сборе метрик» и «реальный алерт».
Навигация по папкам дашбордов стала работать быстрее при большом количестве объектов - актуально для инсталляций, где в одном Grafana живут дашборды нескольких проектов клиента.
Где сейчас
Обновление раскатано на большинство managed-инсталляций. Canvas panel у одного клиента уже в работе, остальные flowcharting-дашборды мигрируем по мере договорённостей - насильно не переводим, потому что каждый дашборд требует ручной работы по воссозданию схемы.
Плагины-зомби не исчезнут разом - у кого-то flowcharting работает годами и трогать без нужды его незачем. Но для новых топологических дашбордов Canvas выглядит разумным выбором: в ядре, обновляется вместе с платформой, не зависит от активности стороннего мейнтейнера.