Zabbix 5.0 preview: новый фронтенд на Vue.js и что это значит для клиентских стендов
Тестируем бета-сборки Zabbix 5.0: новый UI на Vue.js разительно отличается от классического PHP-интерфейса - разбираем что изменилось и как планировать переход.
Zabbix 5.0 в разработке (релиз ожидается в мае 2020): новый UI на Vue.js, улучшенная секретность макросов, HTTP-агент
Zabbix 5.0 анонсирован на май 2020-го, но pre-release сборки уже есть - и мы их покрутили. Не потому что не терпится, а потому что у нескольких клиентов под нашим managed-обслуживанием Zabbix - центральный инструмент мониторинга, и переход на мажорную версию требует планирования заранее. Лучше увидеть подводные камни на лабораторном стенде, чем на production-инсталляции с тремя сотнями хостов.
Главная новость 5.0 - не HTTP-агент и не секретные макросы (хотя и они важны). Главная новость - UI написан заново на Vue.js. И вот тут становится интересно.
Откуда вообще взялся Vue.js в Zabbix
Классический интерфейс Zabbix - это PHP. Много PHP. Он работает, он привычный, и именно поэтому команда Zabbix SIA начала его переписывать. Проблема с PHP-интерфейсом не в том что он медленный или кривой - он вполне нормальный для своего времени. Проблема в том, что добавить туда что-то интерактивное без полной перезагрузки страницы - боль. Дашборды в 4.x немного поправили ситуацию, но в целом Zabbix-UI ощущается как продукт, который создавался в то время, когда JavaScript использовался чтобы проверить форму перед отправкой.
Vue.js - разумный выбор для такого переезда. Не самый хайповый (React популярнее), не самый тяжёлый (Angular - отдельная история), но с хорошим балансом между простотой входа для разработчиков и возможностями для интерактивного UI. Для команды с PHP-бэкграундом - вполне логичная ступенька.
Что мы увидели в бете
Подняли три ноды: один Zabbix-server, два агента, и поставили сверху 5.0 pre-release. Общее впечатление - интерфейс правда стал другим, не просто перекрасили кнопки.
Дашборды стали реактивными. В классическом интерфейсе виджеты обновляются по таймеру, каждый независимо. В новом UI обновление данных - живое, без перезагрузки страницы. На первый взгляд мелочь, но на дежурном экране с десятком виджетов разница заметна: нет этого характерного «мигания» когда страница перезагружается кусками.
Конфигурация хостов и шаблонов - тоже переработана. Формы стали более последовательными, часть ранее разрозненных настроек собрана в логические группы. В 4.x, например, медиатипы и уведомления были в разных местах меню и требовали понять логику связей. В 5.0 это выглядит структурированнее.
Секретные макросы - отдельная и важная история. В 4.x макросы - это просто строки, они хранятся в открытом виде в БД и видны в UI любому с доступом к настройкам. Если в макрос прописан пароль к базе или SNMP community string - это красивая видимая строка для всех администраторов Zabbix. В 5.0 появляется тип «Secret text»: значение шифруется, в UI показывается звёздочками, и даже при экспорте конфигурации значение не попадает в XML. Для клиентских инфраструктур где SNMP-строки - это не «public», это реальное значение от оборудования - разница принципиальная.
HTTP-агент как метод сбора данных тоже доработан. В Zabbix 4.0 появился HTTP-агент как тип элемента данных - можно задать метод, заголовки, тело запроса, обработку JSON-ответа с JSONPath прямо в Zabbix. В 5.0 эти возможности расширены: улучшена обработка ответов, добавлены новые параметры запроса. По сути - встроенный простой REST-клиент для опроса API стал удобнее. Актуально для мониторинга кастомных приложений без написания отдельных скриптов.
Что нас беспокоит
Миграция PHP-интерфейса на Vue.js - это не просто «поставили новый пакет». Во-первых, требования к серверу изменятся: PHP-версия, возможно новые зависимости. Надо проверить по каждому клиентскому стеку.
Во-вторых, у нас есть несколько клиентов с кастомизациями интерфейса - кастомные CSS, добавленные виджеты через хаки в шаблонах PHP. Всё это в новом UI потребует переписывать через Vue-компоненты, если такие точки расширения вообще останутся. Пока не ясно.
В-третьих, сам по себе новый UI в бете ещё сырой. Несколько экранов нашли в промежуточном состоянии - часть классического PHP-интерфейса ещё не перенесена. По всей видимости, в майском GA будет не полный переезд, а гибрид: какие-то экраны новые, какие-то старые. Это нормально для такого масштаба переписывания, но значит что «новый Zabbix» - это переходный процесс, а не разовый переключатель.
Как планируем переход для клиентов
С учётом того что GA ожидается в мае, реальный план такой:
- Апрель - поднять staging-стенд с RC-версией для каждого клиентского стека, проверить кастомизации и шаблоны.
- Май-июнь - дать постабилизироваться первым неделям GA (практика показывает: первый патч-релиз выходит через 2-4 недели после GA и закрывает самые острые проблемы).
- Июль-август - поэтапная миграция, начиная с менее критичных стендов.
Секретные макросы - приоритет для тех клиентов где SNMP community и пароли сейчас хранятся в открытых макросах. Это та фича, ради которой стоит не ждать осени.
Пока главный вывод: Zabbix 5.0 идёт в правильном направлении, но это релиз «сменить фундамент», а не «добавить фичи». Тестировать заранее - не паранойя, а нормальная инженерная практика.