Zabbix 3.0 LTS: мигрируем с 2.4, разбираемся с новым dashboard и меньшей нагрузкой на БД
Перевели часть managed-хостов с Zabbix 2.4 на 3.0 LTS: новый веб-интерфейс, миграция шаблонов и заметно спокойнее стало на PostgreSQL под нагрузкой.
Zabbix 3.0 LTS вышел в феврале 2016 года с переработанным веб-интерфейсом, новыми встроенными шаблонами и улучшенным агентом
Zabbix 3.0 вышел в феврале, и мы полгода смотрели на него с некоторым скепсисом: релиз крупный, LTS-статус обязывает, но торопиться с апгрейдом продакшн-мониторинга не хотелось. В конце июля всё же решили - и перевели три managed-сервера с Zabbix 2.4 на 3.0. Ниже - что реально изменилось и где потратили время.
Почему вообще обновляться
Zabbix 2.4 у нас работал стабильно, жаловаться было особо не на что. Повод появился не из любви к свежим версиям, а из-за PostgreSQL: на одном из серверов с двумястами хостами база стала всё заметнее греть диск. housekeeper не справлялся в окно, история копилась. Посмотрели changelog 3.0 - там честно написано про переработку внутренних запросов к БД и улучшенный housekeeper. Это стало главным аргументом.
Дополнительно: поддержка Zabbix 2.4 уже ограниченная, новые шаблоны под современные версии ПО выходят под 3.x.
Что в 3.0 реально новое
Веб-интерфейс переписан с нуля - теперь Bootstrap, адаптивная верстка, меньше раздражающих перезагрузок страницы при навигации. Старый интерфейс выглядел как что-то из 2008 года, новый - как что-то из 2014-го. Субъективно, но заметно.
Dashboard стал модульным: виджеты двигаются, можно собрать под себя. До этого дашборд в Zabbix был скорее формальностью - никто особо не смотрел, смотрели на графики в разделе Graphs. Теперь это может стать рабочим экраном дежурного, хотя нам потребовалось некоторое время чтобы собрать его в удобном виде.
Шаблоны - в комплекте пришли обновлённые шаблоны для Linux, Windows, сетевого оборудования. Несколько из них ощутимо переработаны: добавлены новые items, LLD-правила стали аккуратнее. Это создало небольшую проблему при миграции (об этом ниже).
Zabbix Agent обновился до 3.0 - расширен список поддерживаемых платформ, несколько новых ключей для мониторинга. Агент 3.0 совместим с сервером 2.x в обоих направлениях, что удобно при постепенном апгрейде.
Процесс миграции
Апгрейд сам по себе несложный: стандартная процедура через zabbix_server --version, обновление пакетов, накатка скриптов миграции БД из поставки. На PostgreSQL прошло без сюрпризов, скрипт отработал за несколько минут.
Проблема оказалась в шаблонах. Если просто обновить сервер, старые шаблоны продолжают работать - Zabbix сохраняет обратную совместимость. Но если хочешь перейти на новые встроенные шаблоны, нужно принять решение: старые данные истории под старыми item-ами останутся, новые item-ы начнут писать новую историю с нуля. Мы прошли этот путь на тестовом сервере сначала.
Что сделали:
- Экспортировали все кастомные шаблоны из 2.4 в XML перед апгрейдом.
- После апгрейда импортировали их обратно - Zabbix 3.0 читает шаблоны 2.4 нормально, но предупреждает о deprecated-полях.
- Встроенные шаблоны обновили только там, где не было кастомных расширений - проще всего на хостах с чисто стандартным набором.
- Гибридные хосты оставили на старых шаблонах пока. Переводить будем постепенно, с потерей истории смирились.
На три сервера ушло около дня работы, включая проверку что всё что мониторилось до - мониторится после.
Нагрузка на БД
Вот здесь разница заметная. На сервере с двумястами хостами - том самом, где housekeeper стал хроническим источником радости - после обновления PostgreSQL работает существенно спокойнее. Housekeeper укладывается в ночное окно, запросы к history и history_uint стали короче. Zabbix 3.0 изменил несколько внутренних запросов и переработал механику housekeeper.
Точные цифры не приводим - стенды разные, конфигурации БД разные, сравнение будет некорректным. Но качественно: там где PostgreSQL периодически уходил в load average 3-4 на housekeeper-пике, теперь 1-1.5. Это ощутимо.
Новый dashboard в работе
Модульный дашборд потребовал времени на настройку. По умолчанию он набит виджетами, половина из которых не нужна: System information, Status of Zabbix, Latest problems - всё это полезно, но занимает место. Под наш режим работы собрали дашборд из четырёх виджетов: проблемы по severity, график нагрузки на топ-5 хостов, статус триггеров по группам хостов, сводка по discovery.
Одно неудобство: дашборд пока один на пользователя, переключаться между разными наборами виджетов нельзя. Для команды это означает что у каждого свой вид, но общего «дежурного экрана» не сделаешь без отдельного пользователя под него. Небольшой изъян, но раздражает.
Параллельно с Prometheus
В июле мы поднимали Prometheus рядом с Zabbix для метрик контейнеров. Обновление Zabbix никак с этим не конфликтует - они решают разные задачи. Zabbix остался за хостами, сервисами, SNMP и железом. Prometheus - за динамическими Docker-окружениями где регистрировать каждый контейнер в Zabbix неудобно.
Разделение пока работает нормально, хотя два инструмента мониторинга в параллель - это дополнительный overhead на поддержку.
Где сейчас
Три сервера на 3.0 работают третью неделю. Регрессов не поймали, данные собираются корректно, housekeeper больше не создаёт проблем. Остальные managed-серверы на Zabbix 2.4 переводим постепенно - по одному, без спешки. LTS-статус у 3.0 есть, но мы не торопимся гнать весь парк разом.
Главный вывод: апгрейд того стоит из-за нагрузки на БД, если у вас больше сотни хостов на Zabbix. Новый интерфейс - приятный бонус, но не причина.
- Prometheus + Alertmanager: первый опыт рядом с Zabbix · 13 июля 2016
- Ceph Jewel 10.2: тестируем BlueStore и пересчитываем iron-серверы · 3 августа 2016