7-го октября вышла очередная новая версия крутой и удобной системы мониторинга. Сегодня я расскажу, как выполнить обновление zabbix с версии 4.2 до последней версии 4.4. Инструкция будет подробная и пошаговая, с описанием всех нюансов.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
Что нового в версии zabbix 4.4
О нововведениях свежей версии zabbix 4.4 в этот раз я почти ничего не слышал. Не видел ни статей на эту тему, ни видео выступлений, хотя обычно наблюдаю их. Либо материала было меньше, либо просто все прошло вне поля моего зрения. Слышал только, что готовится поддержка TimescaleDB, видел публикации на эту тему. Так что пришлось читать официальные what's news и release notes на самом сайте zabbix. Вот что нового нам обещают в zabbix 4.4.
- Новый zabbix-agent, написанный на Go. Из новых возможностей агента заявлено - фреймворк для кастомизации проверок, возможность сохранения состояния между проверками, более гибкий планировщик, более эффективная передача данных, замена текущих агентов с поддержкой большего количества платформ в будущем.
- Вебхуки и более продвинутая логика для действий и оповещений на основе JavaScript. С помощью этих улучшений станет проще настраивать интеграцию с внешними сервисами.
- Новый стандарт для шаблонов. Как я понял, разработчики решили упорядочить создание шаблонов и предложили свой формат для их оформления. Подробнее описано в Zabbix template guidelines. Я пока еще не вникал и не разбирался с этой темой. Посмотрим, что в итоге получится. На мой взгляд хороший шаг сделан. Давно пора было как-то упорядочить шаблоны.
- Как я уже сказал ранее, добавлена поддержка TimescaleDB. Это должно существенно увеличить производительность хранилища данных, что является узким место системы мониторинга zabbix.
- Реализована база знаний для итемов и триггеров. Теперь их можно будет документировать. Любопытная фича, надо будет попробовать. Я обычно поле description для этого раньше использовал.
- Расширился функционал визуализации. Появились новые виджеты для дашбордов, новые типы графиков, возможность агрегировать данные с помощью функций.
- Добавилась поддержка новых версий операционных систем - centos 8, debian 10 и т.д.
Нововведения, как обычно, любопытные и кое-где я обновлю сервера, чтобы потестировать новые фичи. Там, где новый функционал не нужен, обновление ставить не буду. Я больше предпочитаю использовать LTS версии в production.
Основные нововведения Zabbix 4.4 разобрали, приступим к обновлению.
Подготовка к обновлению
Если у вас версия Zabbix ниже 4.0, то предварительно обновите ее до указанной. У меня есть цикл статей на тему обновления Zabbix:
Перед обновлением, сделаем на всякий случай бэкап базы данных. Для этого предварительно остановим сервер.
# systemctl stop 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 4.4:
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
Centos 8
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
Старый репозиторий от версии 4.2 будет автоматически удален.
Очищаем и пересоздаем кэш yum:
# yum clean all # yum makecache
Debian 9
Удаляем пакет текущего репозитория:
# rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bstretch_all.deb # dpkg -i zabbix-release_4.4-1+stretch_all.deb
Обновляем информацию о репозиториях:
# apt update
Debian 10
Удаляем пакет текущего репозитория:
# rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bbuster_all.deb # dpkg -i zabbix-release_4.4-1+buster_all.deb
Обновляем информацию о репозиториях:
# apt update
Ubuntu 18
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
# wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bbionic_all.deb # dpkg -i zabbix-release_4.4-1+bionic_all.deb
Обновляем информацию о репозиториях:
# apt update
Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории — https://repo.zabbix.com/zabbix/4.4/ Дальнейшее обновление не будет отличаться от текущего.
К обновлению подготовились, можно приступать.
Установка обновления zabbix 4.2 до 4.4
Centos
Устанавливаем само обновление zabbix на сервер Centos следующей командой:
# yum upgrade zabbix-server-mysql zabbix-web zabbix-agent
Это список пакетов заббикса для общего случая. Если у вас установлено что-то еще, лучше обновить все сразу. Посмотреть список установленных пакетов zabbix можно командой:
# rpm -qa | grep zabbix zabbix-sender-4.0.4-1.el7.x86_64 zabbix-threat-control-host-.24-el7.noarch zabbix-release-4.0-1.el7.noarch zabbix-threat-control-main-.49-el7.noarch zabbix-get-4.0.4-1.el7.x86_64 zabbix-web-4.0.4-1.el7.noarch zabbix-agent-4.0.4-1.el7.x86_64 zabbix-server-mysql-4.0.4-1.el7.x86_64
В моем случае есть еще пакеты zabbix-get и zabbix-sender. Обновляем все сразу:
# yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get zabbix-sender
Debian / Ubuntu
Устанавливаем само обновление zabbix на сервер с Debian или Ubuntu следующей командой:
# apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent
Дальше инструкция общая для всех систем. После завершения обновления, запускаем сервер:
# systemctl start zabbix-server
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
# tail -f /var/log/zabbix/zabbix_server.log
После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
# systemctl start zabbix-agent
В логах агента и сервера можно посмотреть версию запущенных сервисов.
Starting Zabbix Agent [zb.serveradmin.ru]. Zabbix 4.4.0 (revision cfac660b25).
Starting Zabbix Server. Zabbix 4.4.0 (revision cfac660b25).
Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx. После обновления он будет принадлежать apache, а web интерфейс не будет работать.
# chown -R nginx:nginx /etc/zabbix/web
В веб интерфейсе в самом низу будет показана текущая версия сервера:
Можете изучать новую версию zabbix 4.4 и пробовать улучшения.
Заключение
Процедура обновления Zabbix сервера обычно не сложная. Проблемы чаще всего возникают в двух случаях:
- Проблемы с зависимостями пакетов, чаще всего php или mysql.
- Большая база данных, которая очень долго обновляется, либо не обновляется по какой-то причине.
Первая проблема решается ручным удалением или установкой нужных пакетов. Тут универсального совета дать невозможно. Зависит от того, что вы делали на сервере и почему у вас сломаны зависимости. Вторая проблема решается, в зависимости от причин проблем с базой. Если она слишком большая и поэтому все тормозит и длится слишком долго, надо либо ускорять сервер, либо чистить базу.
Иногда база не обновляется из-за каких-то проблем с записями. Чаще всего в полях acknowledged, куда можно понаписать всего, что угодно. Надо тоже разбираться по месту и удалять то, что мешает обновлению. Но в общем и целом, обновление проходит штатно и лично у меня никогда не было с ним проблем.
У меня очень много статей по настройке zabbix. Все они в отдельном разделе. Так же у меня написана подробная статья по установке и настройке zabbix 4 с моими примерами и рекомендациями.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
после добавления репозитория 4.4, после выполнения apt update, при выполнении apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent - получаю сообшение, что все пакеты имеют последние версии, при этом у меня стоит 4.2 версия( есть идеи?
Проще сразу на 5.0 обновляться. 4.4 можно пропустить. Вряд ли уже кто-то помнит подробности этого обновления. Версия 6.0 на носу.
Доброе. Спасибо за ваши статьи по нима много чего понял.
изучаю заббикс после обновления 4.2 до 4.4 выдает такое сообщение крастным" Incorrect default charset for Zabbix database: "utf8mb4" instead "UTF8"."
ОС CENTOS 7
DB: MariaDB mariadb Ver 15.1 Distrib 10.6.4-MariaDB, for Linux (x86_64) using readline 5.1
Подскажите пожалуйста.
Вам нужно поменять кодировку таблиц базы данных. Вот тут я рассказываю, как это сделать - https://serveradmin.ru/oshibka-v-zabbix-nepodderzhivaemaya-kodovaya-stranicza/
Спасибо :) бегу читать.
Хорошего дня.
Владимир, добрый день!
Подскажите, как правильно подойти к выбору версии Заббикс для продакшена при чистой установке? Какую посоветуете версию выбрать?
Спасибо.
Если совсем с заббиксом не знакомы, то ставьте самую свежую - 4.4. Так вы весь функционал сможете оценить и попробовать. Дальше, когда освоитесь, будете смотреть нововведения и решать, есть смысл обновлять или нет. Вам в любом случае нужно будет обновиться до LTS версии 5.0, когда она выйдет. Заббикс обычно без проблем обновляется с версии на версию и даже с ветки на ветку.
Zabbix сервер и база данных находятся на разных серверах. При обновлении zabbix сервера по инструкции с версии 4.4.1 до версии 4.4.5 (остановка zabbix сервера, обновление пакетов, запуск zabbix сервера) должно было произойти обновление базы данных, что должно было быть видно в /var/log/zabbix/zabbix_server.log. Однако в указанном логе (возможно из-за большого количества записей) я не заметил записей по поводу обновления базы. В то же время в web интерфейсе отображается версия 4.4.5 и данные в базу продолжают поступать. Вопрос такой - при переходе с версии 4.4.1 на версию 4.4.5 должна ли была обновиться база данных или она обновляется в случае более серьезных обновлений например при переходе с 4.2 до 4.4? Если да, то можно ли как -то проверить командой или еще как-то, что zabbix серверу и web интерфейсу 4.4.5 соответствует соответствующая структура базы.
Зависит от конкретного обновления. База не обязательно должна обновляться, особенно в пределах одной ветки.
и тут я застрял.
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent
Reading package lists... Done
Building dependency tree
Reading state information... Done
Skipping zabbix-server-mysql, it is not installed and only upgrades are requested.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
zabbix-agent : Depends: libssl1.1 (>= 1.1.0) but it is not installable
E: Unable to correct problems, you have held broken packages.
Добрый день Zerox.
Обычно с обновлениями не было сложностей, но сегодня решил обновиться с 4.2.8 до 4.4 и...
Как обычно придерживался мануала. Но проблема возникла после запуска сервера он не может обновить базу данных до нужной ему версии.
Вот выдержка из лога:
6435:20200116:205032.377 using configuration file: /etc/zabbix/zabbix_server.conf
6435:20200116:205032.414 current database version (mandatory/optional): 04030002/04030002
6435:20200116:205032.414 required mandatory version: 04040000
6435:20200116:205032.414 starting automatic database upgrade
6435:20200116:205032.415 [Z3005] query failed: [1050] Table 'item_rtdata' already exists [create table item_rtdata (
`itemid` bigint unsigned not null,
`lastlogsize` bigint unsigned default '0' not null,
`state` integer default '0' not null,
`mtime` integer default '0' not null,
`error` varchar(2048) default '' not null,
primary key (itemid)
) engine=innodb]
6435:20200116:205032.416 database upgrade failed
Нашел собратьев по несчастью на форуме zabbix с такой же проблемой, но их вопрос без ответа с декабря 2019г.
Можете подсказать в какую сторону копать?
Я бы для начала пошел в базу данных и посмотрел, что за таблица item_rtdata и какие там данные. Если ничего важного, просто удалили бы ее. Сервер пытается ее создать, но говорит, что она уже существует, ругается на это и прекращает работу.
Из бекапа создал еще один контейнер с сервером zabbix. На сервере mysql создал для него БД и импортировал в нее бекап. Начал эксперементы проводить:
Удалил, но обновление не пошло. zabbix начал ругаться на то, что такой вот таблицы нет.
Создал руками, но он выдавал другую ошибку, жаль не сохранил (она все так же относилась к этой таблице.)
Перезалил БД и сразу удалил таблицу item_rtdata, запускаю zabbix-server и на мое удивление обновление пошло.
Повторяю это на боевом и все падает на том же самом месте...
Благодаря случайности удалось перейти на zabbix 4.4.4, разбираться из-за чего возникает данная проблема не позволяет недостаток знаний.
Zerox, спасибо за то, что обратили мое внимание на Table ‘item_rtdata’ already exists.
Работаю с zabbix совсем недавно. Стоит 4.2, хочу обновиться на 4.4 пока не развернул на всю инфраструктуру.
Подскажите, в тот момент, когда мой сервер перейдет на 4.4, а клиенты и прокси останутся на 4.2 у меня всё сломается? Нужно обновлять всё разом или же есть совместимость 4.2агента с 4.4 сервер?
Спасибо
Агенты точно не обязательно обновлять. У них всегда есть обратная совместимость есть. А вот с прокси по-разному бывает. Чаще всего прокси тоже надо обновлять. Обычно обновляют сначала прокси, а потом сам сервер.
Обновляется всё легко. Однако непонятно, как подтянуть новые шаблоны и новые иконки, которые содержатся в data.sql и images.sql
На Ubuntu 18.04 server с 4.2.5 до 4.4.2 всплыл нюанс .
После установки пакета , в папке /etc/apt/sources.list.d лежал zabbix.list.dpkg-dist , а не zabbix.list из-за этого соотвественно не подтягивались новые пакеты . Нужно просто переименовать и все.
У кого нибудь была проблема, что в заббиксе отображается старый вид граффиков? Не работает "Тут всё просто, теперь Zabbix показывает точное время при наведении мышкой на график."
Новые графики появились только для дашбордов. Все остальные остались такие же, как и прежде.
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
Загружается https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
Подготовка... ################################# [100%]
пакет zabbix-release-4.4-1.el8.noarch уже установлен
[root@zabbix ~]# yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get zabbix-sender
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.colocall.net
* epel: epel.besthosting.ua
* extras: centos.colocall.net
* updates: centos.colocall.net
No packages marked for update
[root@zabbix ~]#
Как так?
Так уже обновлено может? Пакет с новым репозиторием уже загружен. Проверь версии установленных пакетов:
# rpm -qa | grep zabbix
[root@zabbix ~]# rpm -qa | grep zabbix
zabbix-web-4.2.7-1.el7.noarch
zabbix-java-gateway-4.2.7-1.el7.x86_64
zabbix-release-4.4-1.el8.noarch
zabbix-agent-4.2.7-1.el7.x86_64
zabbix-get-4.2.7-1.el7.x86_64
zabbix-web-mysql-4.2.7-1.el7.noarch
zabbix-sender-4.2.7-1.el7.x86_64
zabbix-server-mysql-4.2.7-1.el7.x86_64
Версия системы какая? У тебя репозиторий от 8-й, а пакеты от 7-й.
Не было печали - апдейтов накачали... Теперь ещё и при перезагрузке ВМ с Zabbix появляется ошибка "Stop job is running for Zabbix server" - и длится пока принудительно ВМ не перезагрузишь. Ограничения времени и установка watchdog не помогли, похоже, глюк.
Реально есть такой баг, я его наблюдал и раньше, в предыдущих версиях. Ждал по 30 минут, потом принудительно отключал виртуалку. Не разбирался в чем дело. Редко перезагружаю мониторинг.
У меня он при необходимости сам перезагружается после обновления - придется контролировать, явно баг этой версии.
Тоже с такой проблемой столкнулся, после переезда на новый сервер. Смотреть надо в сторону systemd в котором процессы запускаются и останавливаются параллельно, если не указано иное. Проблема возникает из-за того, что БД успевает выключиться раньше заббикса. В итоге имеем в логах заббикса попытки записать в БД, а БД уже выключена. Решается это дело дописыванием в секцию unit зависимостей. Вообще странно что никто и нигде про настройку systemd не пишет, хотя начиная с 8 версии дебиана оно там есть.
Конкретно в данном случае для дебиана лечится правкой /usr/lib/systemd/system/zabbix-server.service
В секцию [Unit] надо дописать зависимость для БД
After=mysql.service
Requires=mysql.service
И всё станет хорошо
Спасибо за полезную информацию. Я не догодался об этом, хотя специально не проверял. Просто руками zabbix-server останавливал, если нужен был reboot.
Спасибо, получилось. Для Ubuntu 16.04 путь /lib/systemd/system/zabbix-server.service
Даже не совсем так. Как оказалось редактировать этот файл не самая лучшая идея, после обновления всё вернулось к прежнему варианту. Правильно так:
systemctl edit zabbix-server
[Unit]
After=mysql.service
Requires=mysql.service
И вот тогда всё будет отлично.
Ну и для применения изменений надо не забыть сделать systemctl daemon-reload
Так если скрипт systemd обновится в очередном обновлении, то так же работать перестанет.
Нет. Не перестанет, так как в этом случае создаётся отдельный файл
/etc/systemd/system/zabbix-server.service.d/override.conf в котором содержатся изменения.
подробнее здесь:
https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services
Спасибо за информацию, полезно. Я вручную в таких случаях следил за изменениями после обновления. Сейчас переделаю по-нормальному.
Это не глюк. Это криво настроенный systemd.
С утра был удивлен - хост, на котором установлен Zabbix сервер в браузере показывает ошибку соединения, по ssh всё в порядке - пробую развернуть из бэкапа перед обновлением и обновить по новой - агенты везде обновлены.
Для proxy с sqlite нужно ещё удалить файл базы данных, прокси при старте его пересоздаст в новом формате. Без этого не стартанет
Обновился без проблем, был вопрос с конвертацией базы - но всё получилось, просто я немного поспешил. Спасибо за хорошую инструкцию - буду смотреть, что нового появилось.
И второй вопрос, после обновления (деб 10), у меня почему-то потерялась зависимость с апачем, т.е. стало выдаваться:
Следующие пакеты устанавливались автоматически и больше не требуются:
apache2 apache2-bin apache2-data apache2-utils ...
Это глюк? Или что-то пошло не так? А то ж если я выполню "apt-get autoremove", то вебка перестанет работать...
Конкретно на Debian 10 не проверял. Может с обновлением zabbix прилетело и обновление для apache и установилась другая версия?
Да вроде нет, только одна версия ставит
# dpkg --get-selections | grep apache
apache2 install
apache2-bin install
apache2-data install
apache2-utils install
libapache2-mod-php install
libapache2-mod-php7.3 install
Тогда странно, что autoremove предлагает удалить эти пакеты. Я с таким уже сталкивался, когда не подумал, удалил и положил гипервизор :) После обновления proxmox он мне предложил очистить устаревшие пакеты, в числе которых был сам гипервизор. Хорошо, что это было на тесте.
Такая же ситуация - странно:
The following packages were automatically installed and are no longer required:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.0 libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 php7.0-cli php7.0-json php7.0-opcache php7.0-readline ssl-cert
Use 'sudo apt autoremove' to remove them.
Решение вопроса:
sudo apt-mark manual
sudo apt updat
sudo apt upgrade
Больше не предлагает удалить нужные пакеты, нашёл тут: https://ubuntu.fliplinux.com/apt-get-autoremove-2.html
Парсер сломал команду
sudo apt-mark manual имя_пакета
В статье забыли что нужно еще и "zabbix-release" обновить? Или он как-то мистическим образом сам обновится?
я про вот такое
apt-get install --only-upgrade zabbix-release
yum upgrade zabbix-release
Он вручную ставится, что показано в статье. Откуда он обновится автоматически, если привязан к конкретной версии? Это сам репозиторий.