Обновление Zabbix и сборка из исходных кодов

HELP-ME-24.COM (Freelance Team), Черноусов Антон

Просто так писать обзорные статьи на тему администрирования Linux-серверов не особо интересно и я решил опробовать новый формат записей. Скажем так совместим приятное с полезным.

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

Для безболезненного проведения обновления я рекомендую вам выполнить две операции:

  • Бэкап файловой части PHP-FrontEnd'a Zabbix-server
  • Бэкап базы данных

Файловая часть копируется командой cp или rsync, причем второй вариант предпочтительнее, так как вы сохраните структуру символических ссылок и прав доступа, а для резервного копирования базы данных используем pg_dump или как в нашем случае pg_dumpall (больше баз кроме Zabbix на сервере мониторинга нет).

Создание копии баз данных Postgresql

Команда для копирования всех баз данных выглядит следующим образом:

# pg_dumpall -c -h 127.0.0.1 -U postgres > /dump_zabbix_old.sql

Сборка Zabbix-сервер из GIT-репозитария

На самом деле разработка zabbix-ведется в SVN, а репозитарий на GitHUB просто содержит инструкцию как скачать проект с SVN:

# apt-get install subversion
# mkdir /root/zabbix-source
# cd /root/zabbix-source/
# svn co svn://svn.zabbix.com/trunk
# cd ./trunk/
# svn up

Для сборки потребуется установить довольно много dev-пакетов и я просто приведу список необходимых для сборки в максимальной-комплектации (и несколько сопутствующих операций):

# apt-get install build-essential
# aptitude install fping
# ln -s /usr/bin/fping /usr/sbin/fping
# aptitude install automake autoconf
# aptitude install pkg-config
# aptitude install libpcre2-dev libpcre++-dev libpq-dev libsnmp-dev libssh-dev libssh2-1-dev libopenipmi-dev
# aptitude install libevent-dev libldap2-dev libcurl4-openssl-dev
# ./bootstrap.sh

Сборка с максимумом нужных опций осуществляется командой:

# ./configure --enable-server --enable-agent --with-postgresql --with-libxml2 --with-net-snmp --with-ssh2 \
   --with-openipmi --with-libevent --with-libpcre --with-openssl --with-ldap --with-libcurl

В этом случае Zabbix будет собран со следующим набором опций:

Server details:
With database: PostgreSQL
WEB Monitoring: cURL
Native Jabber: no
SNMP: yes
IPMI: yes
SSH: yes
TLS: OpenSSL
ODBC: no

Выполняем сборку и установку (выполняется немного нестандартно):

# make dbschema
# make install

Обновление Zabbix-server

Сразу опишу несколько неявных моментов:

  • Удалите установленную версию zabbix-agent и zabbix-server
  • Конфигурационные файлы при сборке из исходных кодов необходимо переместить из /etc/zabbix в /usr/local/etc/
  • Современные версии zabbix самостоятельно проводят обновление схемы данных при первом запуске zabbix-server

Итак, если вы удалили старую версию zabbix и переместили конфигурационные файлы, то выполните первый запуск zabbix-server для обновления схемы базы данных вручную из консоли. Перед обновлением проверьте существуют ли необходимые каталоги и пользователи, в противном случае создайте их, так как деисталяция пакетов возможно удалила и необходимые каталоги, пользователей и группы:

# groupadd zabbix
# useradd -g zabbix zabbix
# chown zabbix:zabbix /var/log/zabbix/
# mkdir /var/run/zabbix/
# chown zabbix:zabbix /var/run/zabbix/

Переходим к первому запуску для обновления схемы базы данных:

# su zabbix
$ /usr/local/sbin/zabbix_server

Zabbix-перейдет в фоновый режим и начнет обновление схемы базы данных. Не прерывайте его работу и мониторьте текущий статус обновления просматривая log-файл zabbix-server командой:

$ cat /var/log/zabbix/zabbix_server.log

Скорость обновления базы зависит от ее объема, а статус обновления базы отражается в лог-файле следующим образом:

24163:20170526:114315.042 starting automatic database upgrade
24163:20170526:114315.192 completed 0% of database upgrade
24163:20170526:114315.215 completed 1% of database upgrade
24163:20170526:114316.503 completed 2% of database upgrade
24163:20170526:114318.042 completed 3% of database upgrade

По завершении обновления базы данных обновите файловую часть php-frontend и скопируйте параметры (подключения) из старой файловой части Front-а. Осталось лишь настроить SystemD-юниты для автозапуска при старте сервера.

SystemD юниты для автозапуска Zabbix-сервер и Zabbix-агент

Юнит zabbix-сервера находится в файле /usr/lib/systemd/system/zabbix-server.service и содержит следующие записи:

[Unit]
Description=Zabbix Server (PostgreSQL)
Documentation=man:zabbix_server
After=network.target postgresql.service

[Service]
Type=forking
ExecStart=/usr/local/sbin/zabbix_server
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
GuessMainPID=no
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Юнит zabbix-agent находится в файле /usr/lib/systemd/system/zabbix-server.service и содержит следуюшие записи:

[Unit]
Description=Zabbix Server (PostgreSQL)
Documentation=man:zabbix_server
After=network.target postgresql.service

[Service]
Type=forking
ExecStart=/usr/local/sbin/zabbix_server
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
GuessMainPID=no
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Активировать автоматический запуск юнитов при старте сервера можно командами:

# systemctl enable zabbix-agent
# systemctl enable zabbix-agent

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий