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-ю ветку, то так же можете забрать их из репы и импортировать к себе на сервер.
Онлайн курс "Нагрузочное тестирование"
Обучение, которое сделает вас востребованным на рынке автоматизатором в тестировании и перевернёт ваше представление о том, что тестирование - это скучно и является только шагом перед работой разработчиком. Чему вы научитесь на курсе:- Написание скриптов/ сценариев в Performance center, Jmeter, Gatling, k6.io
- Мониторинг различных метрик во время тестирования с помощью Grafana и других инструментов
- Планирование нагрузочного тестирования для разных случаев и целей
- Методики и отчетность — какие разделы важны и для чего
- Оценка точности и качества тестирования, чтобы улучшать процессы и повышать достоверность результатов
-
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Дуже вдячний за Вашу роботу. У мене по вашій інструкції все пройшло ідеально. Ваша робота варта поваги.
Здравствуйте. После обновления с 5.0 на 5.2 вылетела ошибка:
Database error
The Zabbix database version does not match current requirements. Your database version: 4050136. Required version: 5020000. Please contact your system administrator.
На дебиане 10
Где капнуть?
Лог zabbix server смотреть надо. У вас база не обновилась. Это происходит автоматически во время первого запуска сервера после обновления. Либо проблемы с обновлением базы были, либо сам сервер не обновился.
Добрый день. Установил zabbix 5.2.(Centos 8). Не могу настроить почту(Способы оповещения), не проходит тест (Login denied), пробовал разные ящики и настройки, постарался прочитать максимум, что нашел. В упор не вижу, что не так . В логе пишет (failed to send email: Login denied).
А чем тут вам помочь? Функционал отправки почты 100% рабочий, я постоянно пользуюсь. У вас явно указано, что Login denied. Разбирайтесь с почтовыми настройками.
подскажите пожалуйста, может кто знает, zabbix-proxy 5.2.1 на centos 7 где взять? а то сервер обновил, а потом оказалось что в репозитории zabbix-proxy 5.2.1 нет, и старый прокси теперь с сервером не синхронизируется (
Если в репе нет, то только собрать из исходников. В целом, это не очень сложно, но если нет выхода, надо собирать. Это проще, чем назад откатываться.
Согласен с Вами. Да и назад не хочется. Попробую скомпилировать, что поделать.
Поделитесь процессом сборки пожалуйста.
А то я как и вы наступил на эти грабли =)
Я не собирал никогда. Но думаю, там все по стандарту. Качаем исходники, идем в директорию к ним. Запускаем по очереди:
# ./configure
# make
# make install
При обновлении на 5.2 поломались графы отправляемые ableev/Zabbix-in-Telegram
Спасибо за информацию. Я пока не тороплюсь обновляться. Не вижу для себя большой необходимости. Возможно, пропущу этот релиз.
После обновления с 5.0.5 до 5.2.1, появилось уведомление Unsupported charset or collation for tables: item_parameter, role, role_rule.
Надо заменить кодировку базы данных или отдельных таблиц. Тут рассказываю, как это сделать - https://serveradmin.ru/oshibka-v-zabbix-nepodderzhivaemaya-kodovaya-stranicza/
Просьба пояснить по шаблонам.
Была версия заббикса 5.0, стала 5.2.
1. Я правильно понимаю, что шаблоны надо обновлять руками?
2. Как правильно обновлять шаблоны, если хочется обновить все стандартные шаблоны?
3. Есть возможность посмотреть на изменения в шаблонах, не сравнивая их вручную? Официалы ничего не выкладывают https://www.zabbix.com/documentation/current/ru/manual/installation/template_changes
Обычно достаточно прочитать подробные изменения в новой версии, чтобы понять, поменялся там шаблон или нет. Их не так много и меняются они не часто. Все это отражено в release notes.
Как автоматически сравнить шаблоны, я не знаю. Мне известен только один способ замены - вручную удалить старый шаблон и импортировать новый.
Чаще всего в системе используется не так много шаблон по сравнению с тем, что есть в наличии. Можно просто удалить их все и добавить из самых свежих только те, что нужны. Я делаю так.
При импорте шаблона "галочки", которые заббикс выставляет (Правила, Обновить существующее, Создать новый, Удалить отсутствующее) нужно подправлять?
Можно ли обновить шаблон без потери собранных данных?
Галочки я всегда дефолтные использую. А вот обновить так просто шаблон без потери данных не получится. При обновлении шаблона многие айтемы имеют схожие имена, а значит новый шаблон не применится без удаления старых айтемов. А при удалении, они очищаются. В общем, я не нашел простого пути, как обновить шаблон и не потерять данные. Из-за этого на многих серверах по прежнему использую старые шаблоны, если они удовлетворяют задачам. В принципе, вы можете вручную перенести изменения из старого шаблона в новый. Да, это немного муторно делать вручную, но в целом не очень сложно. Зачастую, это единственный способ.
Кстати, заметил, что шаблоны, которые идут изначально в поставке, названы лучше, чем из гитхаба:
было: Template App NNTP Service
стало: NTP Service
Если можно "попытать" - есть еще один вопрос, косвено связанный с обновлением/шаблонами.
Я очень давно мониторю нагиосом. Я могу достать очень старые данные. Но снимаемые данные я завожу сам, руками. Как я понимаю, философия заббикса: добавить хост, подключить шаблон, в шаблоне должно быть ллд. Т.е. метрики, которые мониторятся добавляются автоматически и, что самое главное, если шаблон обновляется, то вся история удаляется.
Как идеалогически верно работать с заббиксом таким образом, чтобы и заббикс был всегда свежий и данные были за весь период. Или заббиксу "в пару" надо ставить что-то еще
"Шаблон обновляется - данные удаляются" это не так. Удаляются данные только если вы удаляете айтем, который их собирал. Совершенно необязательно, что обновление шаблона приведет к удалению айтема. Более того, шаблоны вообще меняются редко и вы всегда можете руками аккуратно все обновить, так что данные не потеряются. В этом плане Zabbix очень хорош. Он как раз адаптирован к хранению большого количества исторических данных.
Ничего не надо ставить заббиксу в пару. Его спокойно можно обновлять, к потере данных это не приводит. Он потому и не обновляет шаблоны автоматически, чтобы обеспечить максимально стабильную работу и сохранность данных. На моей памяти самый популярный шаблон для мониторинга ОС Linux обновился равно один раз в версии 4.4. До этого с версии 2.4 он был один и тот же. В основном новые шаблоны только добавляются. Нет никакой необходимости убирать старые шаблоны и ставить новые.
Спасибо.
Будет здорово, если напишете про подход к сопровождению заббикса в длительной инсталляции: нужно ли что-то чистить, как масштабировать и пр
Обновление шаблонов из репозитория - https://github.com/zabbix/zabbix/tree/master/templatesр дало ошибку "Ошибка при импортировании. Unable to parse at line 7 (near "")." Сервер на Cen8.
Установлены компоненты
zabbix-web-mysql-5.2.1-1.el8.noarch
zabbix-sender-5.2.1-1.el8.x86_64
zabbix-web-5.2.1-1.el8.noarch
zabbix-web-deps-5.2.1-1.el8.noarch
zabbix-server-mysql-5.2.1-1.el8.x86_64
zabbix-java-gateway-5.2.1-1.el8.x86_64
zabbix-agent-5.2.1-1.el8.x86_64
zabbix-release-5.2-1.el8.noarch
zabbix-nginx-conf-5.2.1-1.el8.noarch
zabbix-get-5.2.1-1.el8.x86_64
Что можете посоветовать?
Какой конкретно шаблон импортируете?
Пробовал
template_os_windows_agent.yaml
template_os_linux_active.yaml
template_os_windows_agent_active.yaml
Только что проверил на 5.2, все в порядке. Проверяйте исходный текст шаблона. Надо именно в raw формате сохранить шаблон из репозитория. Там должен быть чистый yaml код. Возможно вы что-то не то скачиваете. Например, html страницу с шаблоном, а не сам шаблон. Вот прямая ссылка - https://raw.githubusercontent.com/zabbix/zabbix/master/templates/os/linux_active/template_os_linux_active.yaml
Импортировано успешно. Спасибо помогло
А можно, пожалуйста, конкретнее про шаблоны. После обновления все старые пропадут и нужно добавлять заново?
спасибо
Нет, все старые шаблоны будут работать так же, как и раньше. Но если вы хотите использовать новые, то нужно будет обновить их вручную.
а принципиальное отличие между ними есть, кроме изменения формата?
Между какими-то есть, а где-то нет. После перехода с 4.0 -> 5.0 очень много шаблонов изменились существенно.
После установки сервера и агента , у агента вот такая как бы ошибка...При этом все работает.
Кто нибудь знает как решить проблему?. На что она влияет и т.д.
Файл то на который он ссылается существует, и он сам его создает со своими правами. Почему такая ерунда - не понятно.
При этом, установка агента на чистую виртуалку Centos 7, 8. Debian - везде одно и тоже....
Так же есть такая же ошибка на самом сервере, но там именно zabbix-server.service и дальше такая же.
zabbix-agent.service: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
Так это вроде не ошибка, а информационное сообщение. На момент запуска pid файла не было, но он успешно создался после запуска.
Я в принципе тоже так подумал. потому что при первом запуске(скажем при перезагрузке виртуалки) все окей. Но стоит перезапустить агента, как появляется такое сообщение. Довольно странно - ведь в весиях до 4й было все отлично.
у меня вот так на сеn 7 получилось
zabbix-server-pgsql-5.0.5-1.el7.x86_64
zabbix-release-5.2-1.el7.noarch
zabbix-web-deps-scl-5.0.5-1.el7.noarch
zabbix-web-pgsql-scl-5.0.5-1.el7.noarch
zabbix-apache-conf-scl-5.0.5-1.el7.noarch
zabbix-web-5.0.5-1.el7.noarch
zabbix-agent-5.2.0-1.el7.x86_64
Так ничего не получилось. Кроме агента ничего не обновилось, потому что пакетов нет в репозитории для Centos 7. Пока не получится обновиться. Можно либо самому собрать свой пакет, либо прям из исходников установить. Но лучше просто подождать. Думаю, пакеты в ближайшее время подвезут.
спасибо, интересно
к сожалению не увидел можно ли через api получать графики
извиняюсь если я тормоз и это уже было в 4-х версиях.
сам сижу на 3.4 и не очень в курсе что нового появилось с тех пор.
но этой фичи сильно мне не хватает. приходится графики строить графаной и забирать в свое вебприложение уже оттуда.
Я, честно говоря, не знаю. По идее можно. Скрипты отправки уведомлений в телеграм откуда-то берут графики и шлют в телегу. Можно там подсмотреть, как это происходит. Я не помню подробностей.
Не смог обновиться по вашему мануалу
Вероятно в имени репозитория ошибка:
# 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
5.2-1+ubuntu или 5.2-1%Bubuntu
Процесс обновления запускается, но репозиторий остается старый и не обновляется с версии 5.0.2 на 5.2.0
Нет ошибки. Даже если через браузер скачать файл по указанной ссылке, то скачивается пакет с репозиторием. Само имя файла - zabbix-release_5.2-1+ubuntu18.04_all.deb. Символ плюс в http запросе кодируется как %2B, но это не проблема.
sudo dpkg -i ./zabbix-release_5.2-1+ubuntu18.04_all.deb
cd /etc/apt/sources.list.d/
sudo mv ./zabbix.list.dpkg-dist ./zabbix.list
sudo apt update
Спасибо за инструкцию. Обновился до версии 5.2. Вот только не останавливал службу, а как оказалось обновил на горячую. Все работает, пишет что версия 5.2. Интересно он при обновлении сам остановил сервер и все перезаписал или перезаписал только часть файлов и в дальнейшем после обновления такого могут появиться проблемы.
Если сейчас все работает, то вряд ли будут какие-то проблемы в будущем. Скорее всего он сам себя перезапустил во время установки, иначе как новые бинарники запустить. Я всегда останавливаю сервер, чтобы нормально снять бэкап. Наживую никогда не обновлял.
А обновление базы он в фоне делает после старта службы или перед запуском службы?
Пробовал обновить 5.0.1 до 5.0.2 в своё время и получил жуткие лаги системы сразу после обновления (до этого нормально работало всё). Ждать не стал и быстро откатил виртуалку к снапшоту до обновления.
Вот думаю что это было и почему. База у меня постгре правда с timescaledb.
Обновление базы запускается в момент старта службы zabbix-server. Пока база не обновится, сервер не запустится в рабочем режиме. Так что тормоза не могли быть связаны с фоновым обновлением.