Share:

Обновляем Zabbix с 4.0 до 5.0 через грабли

YPermitinвDevOps

2020-10-18

#Zabbix

#мониторинг

#DevOps

#обновление

#*.nix

#Linux

#PostgreSQL

Стоит ли обновлять

Первый вопрос: для чего может понадобиться переход с Zabbix 4.0 на 5.0, если и так все работает. Ответ простой: для получения новых возможностей мониторинга и улучшенного текущего функционала. На официальной странице Вы можете найти описание нововведений, а сейчас перечислю плюсы перехода в моем случае:

  • Поддержка сжатия собранных данных в TimescaleDB (автоматическое партицирование, производительность и масштабируемость) при использовании PostgreSQL.
  • Улучшенные агенты сбора данных.
  • Улучшена работа со счетчиками производительности Windows, в т.ч. и для ОС на разных языках.
  • Улучшенная работа с JSON.
  • Расширенные возможности при работе с ODBC.
  • Встроенная интеграция с популярными системами оповещения, в т.ч. и Telegram.
  • Новый состав улучшенных шаблонов для многих популярных сервисов и приложений.

Раньше обновление на новые версии могли приводить к проблемам, т.к. старые шаблоны собираемых метрик были не совместимы. Сейчас же Zabbix 5.0 поддерживает большинство старых шаблонов, что не может не радовать.

В любом случае, обновлять или нет - это Ваш выбор. Но рекомендую это сделать.

План действий

Обычный процесс обновления Zabbix на новую версию имеет такой план.

  • Останавливаем Zabbix и делаем бэкап
  • Обновляем пакеты Zabbix
  • Первый запуск
  • Проверяем результаты
  • Обновляем прокси и агентов
  • Разбираем возникшие проблемы

Будем придерживаться этого плана и сейчас. Подробную информацию по обновлению также можно получить в официальной документации.

Перед началом

Стоит напомнить, что все действия выполняются в операционной системе CentOS 7. Сервер Zabbix установлен версии 4.0, а в качестве СУБД используется PostgreSQL 11. Для веб-интерфейса используется Apache.

Для других дистрибутивов Linux и СУБД для Zabbix будут различия в синтаксисе команд и некоторых нюансах, но общая процедура будет такой же.

Останавливаем Zabbix и делаем бэкап

Первым делом нам нужно подстраховаться и сделать бэкап всех настроек. Это может быть бэкап всей виртуальной машины, если такое возможно. Или же можно сделать бэкап отдельных частей мониторинга. Остановимся на втором варианте, т.к. он более сложный по количеству выполняемых действий.

И так, начнем! Остановим службу сервера Zabbix.

systemctl stop zabbix-server

Теперь мы можем сделать бэкап всех настроек и базы данных. Для примера мы сохраним бэкап всех настроек, компонентов и базу данных в каталог “/opt/zabbix_backup_data”.

# Подготавливаем каталоги для бэкапа данных
mkdir -p /opt/zabbix_backup_data/bin
mkdir -p /opt/zabbix_backup_data/conf
mkdir -p /opt/zabbix_backup_data/doc
mkdir -p /opt/zabbix_backup_data/web
mkdir -p /opt/zabbix_backup_data/db
# Копируем данные в созданные каталоги
# Конфигурация сервера Zabbix
cp -rp /etc/zabbix/zabbix_server.conf /opt/zabbix_backup_data/conf
# Файлы сервера Zabbix
cp -rp /usr/sbin/zabbix_server /opt/zabbix_backup_data/bin
cp -rp /usr/share/doc/zabbix-* /opt/zabbix_backup_data/doc
# Конфигурация веб-сервера
cp -rp /etc/httpd/conf.d/zabbix.conf /opt/zabbix_backup_data/conf 2>/dev/null
cp -rp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix_backup_data/conf 2>/dev/null
# Конфигурация PHP
cp -rp /etc/zabbix/php-fpm.conf /opt/zabbix_backup_data/conf 2>/dev/null
# Файлы веб-интерфейса
cp -rp /usr/share/zabbix/ /opt/zabbix_backup_data/web
# Делаем бэкап базы zabbix с помощью утилиты pg_dump
# Внимание! Вы должны быть аутентифицированы под пользователем, который имеет доступ
# к экземпляру PostgreSQL и базе Zabbix. Также убедитесь, что у него есть доступ
# к каталогу, куда собираетесь сохранить бэкап.
pg_dump zabbix > /opt/zabbix_backup_data/db/zabbix_db_backup.bak
# Процесс создания бэкапа может занимать длительное время.
# Все зависит от размера базы.

Мы сохранили все необходимое на случай отката изменений. Пойдем дальше.

Обновляем пакеты Zabbix

Процесс сервера Zabbix мы уже остановили ранее. Теперь настал момент обновить пакеты. Сначала проверим какие пакеты Zabbix установлены в системе.

yum list installed | grep zabbix

В выводе будут присутствовать все пакеты, связанные с Zabbix и их версии. В нашем случае список пакетов будет таким.

zabbix-agent.x86_64
zabbix-apache-conf.noarch
zabbix-get.x86_64
zabbix-release.noarch
zabbix-server-pgsql.x86_64
zabbix-web.noarch
zabbix-web-pgsql.noarch

Настало время обновить их. Идем на официальную страницу загрузки пакетов и выбираем версии Zabbix, ОС, СУБД и веб-сервера. В результате нам дадут ссылку на репозиторий с пакетами, из которого и нужно поставить обновления. В нашем примере это выглядит так.

Выполним обновление ссылок на репозиторий.

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all

Теперь мы можем обновить эти пакеты.

yum upgrade -y zabbix-server-pgsql zabbix-get zabbix-web-pgsql zabbix-web zabbix-apache-conf zabbix-agent

Если Вы используете Apache, то может понадобиться выполнить команду повторной установки.

yum install -y zabbix-apache-conf

После завершения обновления можно перейти к первому запуску.

Обновляем пакеты Zabbix

Первый запуск

Большая часть работы позади, и мы можем попытаться запустить сервер и перейти в веб-интерфейс.

systemctl start zabbix-server

После первого запуска не стоит сразу бежать в браузер. Дайте процессу Zabbix обновить базу данных на новую версию. Прогресс этой операции можно посмотреть с помощью логов.

cat /var/log/zabbix/zabbix_server.log | grep database | tail -n 20
2949:20201018:110534.112 completed 87% of database upgrade
2949:20201018:110534.115 completed 88% of database upgrade
2949:20201018:110534.118 completed 89% of database upgrade
2949:20201018:110534.120 completed 90% of database upgrade
2949:20201018:110534.123 completed 91% of database upgrade
2949:20201018:110534.126 completed 92% of database upgrade
2949:20201018:110534.128 completed 93% of database upgrade
2949:20201018:110534.130 completed 94% of database upgrade
2949:20201018:110534.133 completed 95% of database upgrade
2949:20201018:110534.135 completed 96% of database upgrade
2949:20201018:110534.136 completed 97% of database upgrade
2949:20201018:110534.137 completed 98% of database upgrade
2949:20201018:110534.138 completed 99% of database upgrade
2949:20201018:110534.139 completed 100% of database upgrade
2949:20201018:110534.139 database upgrade fully completed
2949:20201018:110534.155 database is not upgraded to use double precision values

Команда показывает последние 20 записей из логов, связанных с процессом обновления базы данных. Как мы видим, в конце написано, что база успешно обновлена.

Но радоваться еще рано. Если перейти в веб-интерфейс, то мы увидим сообщение об ошибке.

The Zabbix database version does not match current requirements. Your database version: 5000000. Required version: 4000000. Please contact your system administrator.

То есть база данных для версии 5.0, а веб-интерфейсу требуется версия 4.0. Но как так? Мы же обновили все пакеты!

Все связано с тем, что версия PHP 7.2, которая нужна для 5 версии Zabbix, отсутствует в базовых репозиториях CentOS 7. Из-за этого фактически пакеты zabbix-web и zabbix-web-pgsql не обновились и до сих пор остаются от 4 версии. Для решения проблемы подключим репозиторий “centos-release-scl” и переустановим эти два пакета. Первым делом удалим предыдущие версии:

yum remove zabbix-web-*

Теперь подключим репозиторий “centos-release-scl”:

yum install centos-release-scl

После этого активируем новые настройки Zabbix для Apache. Для этого в файле “/etc/httpd/conf.d/zabbix.conf” должна быть такая строка:

yum install centos-release-scl

SetHandler "proxy:unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock|fcgi://localhost"

Эта настройка позволяет использовать PHP 7.2 из пакета PHP-FPM. Перезапускаем все службы:

# Перезапускаем сервер Zabbix и веб-сервер
systemctl restart zabbix-server httpd
# Включаем автозапуск PHP-FPM
systemctl enable --now rh-php72-php-fpm

Теперь мы можем перейти в браузере в веб-интерфейс и успешно авторизоваться.

Успешный вход после обновления

Единственный нюанс - может потребоваться очистка кэша браузера, т.к. кэш от старой версии веб-интерфейса может привести к некорректному отображению разметки или выполнению некоторых функций. Нажмите Ctrl+F5 для обновления кэша браузера текущей страницы.

Проверяем результаты

В прошлой публикации мы рассмотрели основные способы диагностики работы мониторинга. Там же было сказано, что логи сервера - основной источник данных о его работе и возможных проблемах. Посмотрим есть ли ошибки в логах.

grep -i error /var/log/zabbix/zabbix_server.log

В моем случае ошибок никаких не возникало. Тогда можно посмотреть последние 50 событий.

tail -n 30 /var/log/zabbix/zabbix_server.log
4954:20201018:115732.058 server #25 started [icmp pinger #1]
4958:20201018:115732.059 server #29 started [alerter #3]
4964:20201018:115732.059 server #35 started [lld worker #1]
4944:20201018:115732.059 server #15 started [poller #2]
4951:20201018:115732.064 server #22 started [trapper #3]
4963:20201018:115732.070 server #34 started [lld manager #1]
4932:20201018:115732.070 server #3 started [timer #1]
4953:20201018:115732.074 server #24 started [trapper #5]
4955:20201018:115732.083 server #26 started [alert manager #1]
4956:20201018:115732.084 server #27 started [alerter #1]
4957:20201018:115732.084 server #28 started [alerter #2]
4959:20201018:115732.084 server #30 started [preprocessing manager #1]
4960:20201018:115732.085 server #31 started [preprocessing worker #1]
4962:20201018:115732.085 server #33 started [preprocessing worker #3]
4965:20201018:115732.085 server #36 started [lld worker #2]
4961:20201018:115732.118 server #32 started [preprocessing worker #2]
4931:20201018:122734.734 executing housekeeper
4931:20201018:122734.909 housekeeper [deleted 3168 hist/trends, 7 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.171355 sec, idle for 1 hour(s)]
4931:20201018:132741.474 executing housekeeper
4931:20201018:132741.539 housekeeper [deleted 4599 hist/trends, 0 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.060424 sec, idle for 1 hour(s)]
4931:20201018:142748.409 executing housekeeper
4931:20201018:142748.480 housekeeper [deleted 4595 hist/trends, 0 items/triggers, 0 events, 2 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.066891 sec, idle for 1 hour(s)]
4931:20201018:152754.686 executing housekeeper
4931:20201018:152754.761 housekeeper [deleted 4601 hist/trends, 0 items/triggers, 0 events, 1 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.071199 sec, idle for 1 hour(s)]
4931:20201018:162801.570 executing housekeeper
4931:20201018:162801.634 housekeeper [deleted 4607 hist/trends, 0 items/triggers, 0 events, 1 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.060641 sec, idle for 1 hour(s)]
4931:20201018:172808.511 executing housekeeper
4931:20201018:172808.574 housekeeper [deleted 4598 hist/trends, 0 items/triggers, 0 events, 1 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.058850 sec, idle for 1 hour(s)]
4931:20201018:182815.213 executing housekeeper
4931:20201018:182815.285 housekeeper [deleted 4601 hist/trends, 0 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 records in 0.067710 sec, idle for 1 hour(s)]

Ничего особенно в логах не видим: процессы запущены, работает housekeeper, все штатно. Тогда зайдем в список хостов в веб-интерфейсе и проверим собираются ли метрики.

Сбор данных продолжается

Тоже все хорошо. Несмотря на то, что агентов мы не обновляли (кроме агента на Zabbix-сервере), мониторинг продолжает работать в штатном режиме.

Однако, на основной панели веб-интерфейса можно увидеть вот такую информацию об ошибке.

Ошибка с настройкой часового пояса PHP

Для исправления достаточно в файле “/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf” исправить параметр “date.timezone” (расскоментировать и поставить нужный часовой пояс). Вот так в моем случае выглядит параметр до и после изменения:

# До
; php_value[date.timezone] = Europe/Riga
# После
php_value[date.timezone] = Asia/Yekaterinburg

После изменения параметров обязательно нужно перезапустить службы и включить их запуск автоматически при загрузке ОС.

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

После этого ошибка настройки часового пояса больше не появится.

Добавляем новые шаблоны

В 5 версии Zabbix появились новые усовершенствованные шаблоны, но после обновления они не появились автоматически. Добавим их вручную.

Для этого идем на официальный сайт и скачиваем шаблоны. Например, вот эти. Добавляем все что необходимо и используем в своих узлах мониторинга.

Конечно, возможно придется отказаться от старых шаблонов, но это уже другая история.

Обновляем прокси и агентов

Обновление Zabbix-прокси практически такое же как и для сервера, но с одним исключением. Вместо команды:

yum upgrade -y zabbix-server-pgsql zabbix-frontend-php

нужно использовать:

yum upgrade -y zabbix-proxy

В остальном никаких проблем быть не должно. Вы всегда можете проверить какие пакеты Zabbix установлены на сервере с Zabbix-прокси, чтобы знать что обновлять. Команды для просмотра списка мы уже рассматривали выше.

Что касается агентов, то тут тоже ничего нового. Просто актуализируйте репозиторий и выполните:

yum upgrade -y zabbix-agent

На самом деле мы это уже сделали на сервере в примере выше.

Обновить агентов в других ОС также не сложная: скачивайте новый дистрибутив и устанавливайте / обновляете его компоненты. Никаких сложностей не должно быть. Если же будут, то обратитесь к официальной документации.

Продолжение следует

Теперь мы используем Zabbix 5 версии, задача успешно выполнена.

Это была еще одна небольшая публикация по теме мониторинга с помощью Zabbix. В следующих статьях мы поговорим о создании своего шаблон для сбора метрик и рассмотрим некоторые особенности этого процесса, настроим уведомления в Telegram-канал, а также получении данных с Prometheus и визуализации данных в Grafana. И, конечно же, оптимизация производительности сервера мониторинга Zabbix!

Будьте на связи :)

Y

YPermitin

.NET, TSQL, DevOps, 1C:Enterprise

Developer, just developer.

Поделиться

Другие статьи

Развертывание ASP.NET Core приложений на Ubuntu Linux
Развертывание ASP.NET Core приложений на Ubuntu Linux
Настройка обслуживания PostgreSQL. Основное и простое
Настройка обслуживания PostgreSQL. Основное и простое
Счетчики производительности Windows + PowerShell
Счетчики производительности Windows + PowerShell

Все статьи от автора: YPermitin

Copyright © 2024 Убежище инженера