26 октября 2020 года состоялся релиз версии 5.2 популярной системы мониторинга Zabbix. В своей статье я расскажу, как обновиться до новой версии Zabbix 5.2 с предыдущего релиза 5.0. В качестве операционных систем, на которых будет выполняться обновление выступят Centos 7, 8 и Debian 10, Ubuntu 18, 20.
Содержание:
Что нового в Zabbix 5.2?
Все нововведения свежей версии Zabbix 5.2 вы можете прочитать в официальном релизе — https://www.zabbix.com/ru/release_notes. Я среди них выделил следующие:
- Появился новый тип элемента данных — script. С его помощью можно существенно расширить возможности мониторинга. Например, при наблюдении за микросервисами и приложениями. Отрадно видеть такие изменения. Явно видно, что Zabbix старается идти в ногу со временем.
- Комплексные экраны полностью заменяются дашбордами. Их теперь можно будет создавать в шаблонах (наконец-то). Существующие экраны будут трансформированы в дашборды автоматически.
- Появились новые функции триггеров для работы с историческими данными. В документации еще не вижу подробностей. На одном из скринов видел функцию trendavg. Надо ждать обновление доков с подробностями использования.
- Улучшили ролевую модель прав пользователей для гранулярного управления правами. Не понял, о чем речь, не разбирался еще. Думаю, просто более гибко можно настраивать права на объекты и элементы мониторинга.
- Появились готовые шаблоны для мониторинга Asterisk, DB Oracle, Ceph, Squid, Php-fpm. Многие костыли, которые я городил много лет для мониторинга всех этих программ, становятся не актуальными. Напоминаю, что чуть раньше появился шаблон для мониторинга mssql server.
- Появилась встроенная поддержка протокола modbus. Я как раз недавно настраивал подобное. Для этого требовалась компиляция и установка внешнего модуля. Теперь все работает из коробки.
- В качестве стандартного формата для шаблонов становится YAML вместо XML.
- Настройки языка и часового пояса вынесли наконец-то в веб интерфейс. Их можно глобально указать во время установки сервера или отдельно в настройках пользователя.
- Теперь хосты можно создавать вообще без указания интерфейса и адреса на нем. Раньше приходилось указывать какой-то несуществующий адрес, если у вас был чисто технический хост, например, с http агентом, который сам по себе может собирать данные.
Ну и много других более мелких изменений. Я пробежался глазами по release_notes и перевел то, что показалось наиболее интересным. Еще наконец-то починили баг в Latest Data с отображением списков.
В общем, Zabbix не стоит на месте, развивается. Свою нишу в мониторинге удерживает твердо. Если кто-то не читал мою статью про сравнение Zabbix vs Prometheus, можете ознакомиться. Описал своими словами отличия.
Так же рекомендую мою статью по установке и настройке Zabbix 5. Там я разбираю различные варианты установки, выполняю первоначальную настройку и делюсь своим опытом эксплуатации данной системы мониторинга.
Подготовка к обновлению
Важная информация перед обновлением. Версия 5.2 без длительной поддержки. Через пол года к ней перестанут выходить обновления, так что вам обязательно придется обновляться на следующую версию. Если для вас не критичны нововведения этого релиза, пропускайте его и ждите новой LTS версии.
Если у вас версия ниже 5.0, то предварительно обновите ее до указанной. У меня есть цикл статей на тему обновления Zabbix:
Перед обновлением, сделаем на всякий случай бэкап базы данных. Для этого предварительно остановим сервер с агентом.
# systemctl stop zabbix-server zabbix-agent
У меня что-то активно писалось в базу, поэтому сервер выключался долго. Я проверил лог zabbix-server, чтобы убедиться в корректном выключении. Там все нормально было, сервер штатно завершил работу, дописав то, что у него там накопилось. Так что бэкапим.
# /usr/bin/mysqldump --opt -v --databases zabbix -uzabbix -p'password' | /usr/bin/gzip -c > /root/zabbix.sql.gz
zabbix | название базы данных заббикса |
-uzabbix | ключ -u и дальше имя пользователя базы данных |
-p’password’ | ключ -p и дальше пароль пользователя бд, если в пароле есть спецсимволы, экранируйте их одиночными кавычками |
На всякий случай сохраним php скрипты админки, чтобы можно было оперативно запустить старую версию в случае нештатной ситуации. Хотя лично я сделал снепшот виртуалки перед обновлением, чтобы откатиться назад в случае проблем.
# cp -R /usr/share/zabbix /root
Centos 7
Подключаем репозиторий версии zabbix 5.0:
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm
Centos 8
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpmСтарый репозиторий от версии 4.4 будет автоматически удален.
Очищаем и пересоздаем кэш yum:
# yum clean all # yum makecache
Debian 10
Удаляем пакет текущего репозитория:
# rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/5.2/debian/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bdebian10_all.deb # dpkg -i zabbix-release_5.2-1+debian10_all.deb
Обновляем информацию о репозиториях:
# apt update
Ubuntu 18
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu18.04_all.deb # dpkg -i zabbix-release_5.2-1+ubuntu18.04_all.deb
Обновляем информацию о репозиториях:
# apt update
Ubuntu 20
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu20.04_all.deb # dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
Обновляем информацию о репозиториях:
# apt update
Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории — https://repo.zabbix.com/zabbix/5.2/ Дальнейшее обновление не будет отличаться от текущего.
К обновлению подготовились, можно приступать.
Установка обновления zabbix 5.0 до 5.2
Centos 7, 8
Для начала проверим список установленных пакетов zabbix в системе. Их название может быть разным в зависимости от используемых репозиториев. К примеру, в centos 7 у пакетов может быть дополнение в виде scl к названию пакета.
Centos 7:
# rpm -qa | grep zabbix zabbix-web-5.0.5-1.el7.noarch zabbix-web-mysql-scl-5.0.5-1.el7.noarch zabbix-agent-5.0.5-1.el7.x86_64 zabbix-web-deps-scl-5.0.5-1.el7.noarch zabbix-apache-conf-scl-5.0.5-1.el7.noarch zabbix-release-5.2-1.el7.noarch zabbix-server-mysql-5.0.5-1.el7.x86_64
Centos 8:
# rpm -qa | grep zabbix zabbix-server-mysql-5.0.5-1.el8.x86_64 zabbix-web-5.0.5-1.el8.noarch zabbix-web-mysql-5.0.5-1.el8.noarch zabbix-web-deps-5.0.5-1.el8.x86_64 zabbix-release-5.0-1.el8.noarch zabbix-agent-5.0.5-1.el8.x86_64
Устанавливаем обновление zabbix на сервер Centos 8, выбирая установленные у вас пакеты:
# yum upgrade zabbix-web zabbix-web-mysql zabbix-server-mysql zabbix-agent
Для centos 7 будет такой список:
# yum upgrade zabbix-web zabbix-web-mysql-scl zabbix-agent zabbix-server-mysql
Обращаю внимание, что на момент написания данной статья, пакетов 5.2 для Centos 7 в репозиториях нет. В официальных инструкциях их тоже нет и не понятно, будут ли. Как только появятся, я дополню статью.
После завершения обновления, запускаем zabbix-server.
# systemctl start zabbix-server
Проверяем лог сервера. Необходимо дождаться обновления базы данных. Важно не трогать в этот момент сервер, не прерывать обновление, не пытаться его перезапустить. Если база большая, обновление может длиться очень долго. Рекомендую сначала где-то протестировать этот процесс, прежде чем обновлять прод.
# tail -f /var/log/zabbix/zabbix_server.log
В конце должны получить сообщение:
2860543:20201029:173036.441 completed 100% of database upgrade 2860543:20201029:173036.441 database upgrade fully completed
Есть ненулевой шанс, что будет какая-то ошибка с базой. Чаще всего возникают проблемы с какой-то нестандартной записью в таблице. Туда может попасть какой-то необычный символ, или с кодировкой проблемы. В этих случаях удаляйте проблемные записи, меняйте кодировку базы zabbix.
После обновления переходите в web интерфейс и проверяйте версию Zabbix. Должна быть 5.2.
На этом обновления Zabbix до 5.2 на Centos завершено.
Debian / Ubuntu
Устанавливаем само обновление zabbix на сервер с Debian или Ubuntu следующей командой:
# apt upgrade zabbix-agent zabbix-frontend-php zabbix-nginx-conf zabbix-server-mysql
После завершения обновления, запускаем сервер:
# systemctl start zabbix-server
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
# tail -f /var/log/zabbix/zabbix_server.log
После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
# systemctl start zabbix-agent
В логах агента и сервера можно посмотреть версию запущенных сервисов.
Starting Zabbix Agent [Zabbix server]. Zabbix 5.2.0 (revision bcf99fb248). Starting Zabbix Server. Zabbix 5.2.0 (revision bcf99fb248).
Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx, в том случае, если веб сервер работает от него. После обновления он будет принадлежать apache, а web интерфейс не заработает.
# chown -R nginx:nginx /etc/zabbix/web
Теперь можете лицезреть обновленную версию web интерфейса в браузере.
Заключение
Напоминаю, что с обновлением 5.2 появились новые шаблоны. Они автоматически не появятся у вас на сервере. Их нужно будет скачать и импортировать вручную из репозитория — https://github.com/zabbix/zabbix/tree/master/templates. Это же касается и способов оповещения, который много добавилось в 5-й версии. Если не обновили их вручную при переходе на 5-ю ветку, то так же можете забрать их из репы и импортировать к себе на сервер.