Grafana 12: переезд на новый движок алертинга при 500+ источниках данных
Обновились с Grafana 11 до 12 на нескольких инсталляциях - разбираем, что реально изменилось в алертинге и производительности дашбордов при большом числе источников.
Выход Grafana 12 с переработанным движком алертинга и новой архитектурой плагинов, май 2025
Grafana Labs выпустила 12-ю версию в начале мая, и мы начали получать её по плановым обновлениям инсталляций заказчиков. Не потому что спешили - просто плановые обновления совпали по времени. В результате за две недели обновили четыре independent-инсталляции с суммарным количеством источников данных от 500 штук и выше, и теперь можно говорить не по документации, а по наблюдениям.
Что изменилось в движке алертинга
Grafana с версии 9 постепенно вытесняла Legacy Alerting в пользу Unified Alerting - тот самый движок, основанный на Prometheus Alertmanager. В 12-й этот переход окончательно оформился: Legacy Alerting убрали из кодовой базы полностью, плюс переработали внутренние механизмы оценки правил.
Ключевое изменение с точки зрения производительности - группировка и параллельная оценка alert rules. В 11-й версии при большом числе правил они выстраивались в очередь оценки, и при загруженном datasource задержки накапливались: правило ждало своей очереди, интервал оценки съезжал. В 12-й оценка групп правил идёт параллельно, изолированно. На инсталляции с 200+ активными правилами это заметно - средняя задержка оценки упала, и алерты стали приходить ближе к заявленному интервалу.
Второе изменение - переработка state history. Grafana теперь умеет хранить историю переходов состояний alert rule (normal/pending/firing) более компактно, с возможностью настройки backend для этого хранилища. По умолчанию - Loki, если он настроен в стеке. Это полезно: раньше разобраться, почему алерт сработал в 3:47 и снялся в 3:52, было квестом по логам самой Grafana.
Дашборды и производительность на масштабе
Здесь история чуть более неоднозначная. Grafana 12 переработала архитектуру плагинов - плагины теперь работают через изолированный runtime с более чётким API. Для большинства дашбордов это прозрачно, но при обновлении мы столкнулись с тем, что несколько плагинов старых версий просто перестали грузиться.
Конкретно - два кастомных panel-плагина, которые заказчики использовали ещё с Grafana 8-9 и которые давно не обновлялись. Они работали в 11-й через legacy compatibility layer, в 12-й этот слой убрали. Пришлось либо находить актуальные альтернативы, либо переписывать. На одной инсталляции выбрали замену из официального каталога, на другой - оставили старый плагин, заморозили версию Grafana до 11.x на этом узле и решаем вопрос с заказчиком отдельно.
По скорости загрузки дашбордов: на больших дашбордах (50+ панелей, несколько источников данных одновременно) субъективно чуть быстрее. Grafana 12 умеет лучше параллелить запросы к datasource при первичной загрузке панелей. На дашбордах с 10-15 панелями разницы практически нет.
Что потребовало внимания при обновлении
Несколько моментов, с которыми пришлось разбираться:
- Совместимость alert rules. Правила из Unified Alerting мигрировали без проблем. Если у кого-то ещё был Legacy Alerting (у нас такого не осталось, но в документации это расписано отдельно) - там нужна ручная миграция через специальный инструмент в 11.x перед обновлением на 12.
- Notification policies и маршрутизация. Grafana 12 добавила более гибкую логику маршрутизации алертов: можно задавать conditions по label-значениям с регулярками прямо в UI, без редактирования YAML Alertmanager вручную. Звучит хорошо, на практике - если у вас уже настроена сложная routing-конфигурация через provisioning, надо проверить, что она не конфликтует с новыми UI-настройками. Один раз словили ситуацию, когда алерты начали уходить в две очереди одновременно.
- Плагины - проверять заранее. Grafana Labs опубликовала список плагинов, которые несовместимы с новым plugin runtime. Мы этот список посмотрели после того, как один из плагинов упал. Логика «проверь до обновления» применима и здесь.
- Loki как state history backend. Если в стеке уже есть Loki - Grafana 12 подхватывает его автоматически для истории состояний алертов. Надо убедиться, что Loki-инстанс достаточно нагружен или добавить отдельный tenant / stream labels, чтобы это не смешивалось с основными логами.
Где сейчас
Три из четырёх инсталляций работают на Grafana 12, четвёртая - на 11.x до решения вопроса с плагином. На тех трёх, что уже переехали, алертинг ведёт себя стабильно, и уже после первой недели видно, что задержки оценки правил выровнялись - не было ни одного случая, когда алерт пришёл через несколько интервалов вместо одного.
Архитектура плагинов - правильный шаг, но для тех, у кого в стеке есть кастомные или старые плагины, обновление требует аудита заранее. Пара часов на проверку совместимости сохранит пару дней на разбор после обновления в production.
Если ваши инсталляции Grafana сопровождаем мы в рамках managed-сопровождения - обновление на 12-ю планируем с аудитом плагинов и тестированием алертинга на staging перед переездом.