ADG Оставить заявку
Блог DevOps 4 мин чтения

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 выглядит разумным выбором: в ядре, обновляется вместе с платформой, не зависит от активности стороннего мейнтейнера.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.