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

    Общий рейтинг статьи: 0 (проголосовало 0 )
    Опубликовано:  [просмотров 254]


    Просто так писать обзорные статьи на тему администрирования 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


    Связанные записи в блоге

    Обсуждение статьи

    Ваш комментарий: