Thank you for reading this post, don't forget to subscribe!
26 октября 2020 года состоялся релиз версии 5.2 популярной системы мониторинга Zabbix
Что нового в 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 не стоит на месте, развивается. Свою нишу в мониторинге удерживает твердо
Подготовка к обновлению
Важная информация перед обновлением. Версия 5.2 без длительной поддержки. Через пол года к ней перестанут выходить обновления, так что вам обязательно придется обновляться на следующую версию. Если для вас не критичны нововведения этого релиза, пропускайте его и ждите новой LTS версии.
Перед обновлением, сделаем на всякий случай бэкап базы данных. Для этого предварительно остановим сервер с агентом.
1 |
# systemctl stop zabbix-server zabbix-agent |
У меня что-то активно писалось в базу, поэтому сервер выключался долго. Я проверил лог zabbix-server, чтобы убедиться в корректном выключении. Там все нормально было, сервер штатно завершил работу, дописав то, что у него там накопилось. Так что бэкапим.
1 |
# /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 скрипты админки, чтобы можно было оперативно запустить старую версию в случае нештатной ситуации. Хотя лично я сделал снепшот виртуалки перед обновлением, чтобы откатиться назад в случае проблем.
1 |
# cp -R /usr/share/zabbix /root |
Centos 7
Подключаем репозиторий версии zabbix 5.0:
1 |
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm |
Centos 8
1 |
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpmСтарый репозиторий от версии 4.4 будет автоматически удален. |
Очищаем и пересоздаем кэш yum:
1 2 |
# yum clean all # yum makecache |
Debian 10
Удаляем пакет текущего репозитория:
1 |
# rm -Rf /etc/apt/sources.list.d/zabbix.list |
Подключаем новый:
1 2 |
# 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 |
Обновляем информацию о репозиториях:
1 |
# apt update |
Ubuntu 18
Удаляем пакет текущего репозитория:
1 |
rm -Rf /etc/apt/sources.list.d/zabbix.list |
Подключаем новый:
1 2 |
# 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 |
Обновляем информацию о репозиториях:
1 |
# apt update |
Ubuntu 20
Удаляем пакет текущего репозитория:
1 |
rm -Rf /etc/apt/sources.list.d/zabbix.list |
Подключаем новый:
1 2 |
# 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 |
Обновляем информацию о репозиториях:
1 |
# apt update |
Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории — https://repo.zabbix.com/zabbix/5.2/ Дальнейшее обновление не будет отличаться от текущего.
К обновлению подготовились, можно приступать.
Установка обновления zabbix 5.0 до 5.2
Centos 7, 8
Для начала проверим список установленных пакетов zabbix в системе. Их название может быть разным в зависимости от используемых репозиториев. К примеру, в centos 7 у пакетов может быть дополнение в виде scl к названию пакета.
Centos 7:
1 2 3 4 5 6 7 8 |
# 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:
1 2 3 4 5 6 7 |
# 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, выбирая установленные у вас пакеты:
1 |
# yum upgrade zabbix-web zabbix-web-mysql zabbix-server-mysql zabbix-agent |
Для centos 7 будет такой список:
1 |
# yum upgrade zabbix-web zabbix-web-mysql-scl zabbix-agent zabbix-server-mysql |
Обращаю внимание, что на момент написания данной статья, пакетов 5.2 для Centos 7 в репозиториях нет. В официальных инструкциях их тоже нет и не понятно, будут ли. Как только появятся, я дополню статью.
После завершения обновления, запускаем zabbix-server.
1 |
# systemctl start zabbix-server |
Проверяем лог сервера. Необходимо дождаться обновления базы данных. Важно не трогать в этот момент сервер, не прерывать обновление, не пытаться его перезапустить. Если база большая, обновление может длиться очень долго. Рекомендую сначала где-то протестировать этот процесс, прежде чем обновлять прод.
# tail -f /var/log/zabbix/zabbix_server.log
В конце должны получить сообщение:
1 2 |
2860543:20201029:173036.441 completed 100% of database upgrade 2860543:20201029:173036.441 database upgrade fully completed |
Есть ненулевой шанс, что будет какая-то ошибка с базой. Чаще всего возникают проблемы с какой-то нестандартной записью в таблице. Туда может попасть какой-то необычный символ, или с кодировкой проблемы. В этих случаях удаляйте проблемные записи, меняйте кодировку базы zabbix. ниже описание:
Ошибка в Zabbix - Неподдерживаемая кодовая страница
Некоторое время назад столкнулся с ошибкой в web интерфейсе Zabbix после очередного обновления сервера. Текст ошибки в веб интерфейсе - Неподдерживаемая кодовая страница или тип сравнения для таблиц. То же самое было на английском языке в логе - character set name or collation name that is not supported by Zabbix found in 379 column(s) of database "zabbix", only character set "utf8" and collation "utf8_bin" should be used in database.
Выглядела ошибка вот так.
1 2 3 4 5 6 |
SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA` , '`.`', t.`TABLE_NAME` , '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;' ) AS sqlcode FROM `information_schema`.`TABLES` t WHERE 1 AND t.`TABLE_SCHEMA` = 'zabbix' ORDER BY 1 LIMIT 0 , 180; |
Работа этой команды сформирует на выходе набор из команд для перекодировки каждой таблицы в отдельности. Их нужно все запустить. Если делать все через phpmyadmin, то не возникает проблем. Все команды копируются разом и исполняются. Если будете делать через консоль сервера, то придется как-то обрабатывать вывод, чтобы подать его потом на вход. Надо будет от лишних символов очищать.
Не забудьте сделать бэкап базы данных перед тем, как начнете с ней что-то делать.
После обновления переходите в 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
После завершения обновления, запускаем сервер:
1 |
# systemctl start zabbix-server |
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
1 |
# tail -f /var/log/zabbix/zabbix_server.log |
После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
1 |
# systemctl start zabbix-agent |
В логах агента и сервера можно посмотреть версию запущенных сервисов.
1 2 |
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 интерфейс не заработает.
1 |
# chown -R nginx:nginx /etc/zabbix/web |
Теперь можете лицезреть обновленную версию web интерфейса в браузере.
Напоминаю, что с обновлением 5.2 появились новые шаблоны. Они автоматически не появятся у вас на сервере. Их нужно будет скачать и импортировать вручную из репозитория - https://github.com/zabbix/zabbix/tree/master/templates. Это же касается и способов оповещения, который много добавилось в 5-й версии. Если не обновили их вручную при переходе на 5-ю ветку, то так же можете забрать их из репы и импортировать к себе на сервер