Table of Contents
Бэкап и восстановление Zabbix сервера
Есть тестовый zabbix cервер который стоит на дешевом VDS работающий на обычных sata дисках.
При незначительной нагрузке iowait процессора составлял порядка 20%.
Попробуем перенести сервер на такой же дешевый VDS, но на ssd дисках.
Заодно распишем процедуру бэкапа и восстановления zabbix сервера.
Бэкап
Процесс бэкапа не сложный, надо скопировать пару директории в которых zabbix хранит настройки и свои скрипты, а так же сделать дамп бады данных.
В базе данных zabbix хранит настройки хостов за которыми он следит и полученные с элементов данных значения.
Данных в базе может скопиться быть очень много и поговаривают что если делать дамп с помощью mysqldump, то на болшьших базах время восстановления может занять дни. В данном случае резервную копию сделаем по старинке.
Так же полезно будет скопировать настройки веб сервера и ssl сертификаты
В итоге список того, что надо забэкапить будет таким:
- Базу данных в которой zabbix хранит настройки и данные.
- Директорию /etc/zabbix с настройками zabbix агента и сервера.
- Директорию /usr/share/zabbix с файлами веб-интерфейса и скриптами.
- Выборочно или целиком директорию /etc/httpd с настройками apache агента и сервера.
- Директорию /etc/letsencrypt c ssl сертификатом.
Простой скрипт, без учета версионности и без копирования на какой-либо третий сервер.
- copy_zabbix_server.sh
#!/bin/bash ROPT="-v -az --delete" #RSYNC rsync $ROPT /etc/zabbix/ /backup/zabbix_server/etc_zabbix rsync $ROPT /usr/share/zabbix/ /backup/zabbix_server/usr_share_zabbix rsync $ROPT /etc/httpd/ /backup/zabbix_server/etc_httpd rsync $ROPT /etc/letsencrypt/ /backup/zabbix_server/etc_letsencrypt #STOP ZABBIX systemctl stop zabbix-server sleep 3 #MYSQLDUMP mysqldump -u USERNAME -pPASSWORD zabbix_db > /backup/zabbix_server/zabbix_db.sql #START ZABBIX systemctl start zabbix-server #TAR tar -czvf /backup/zabbix_server.tar.gz -C /backup/ zabbix_server
Восстановление
Восстанавливать zabbix можно на заранее подготовленный резервный сервер или на совсем свежий сервер.
В первом, если на резервном сервере уже установлен mysql, zabbix сервер и агент, подготовлен apache и лежит актуальная версия бэкапа, то остается только из бэкапа полностью скопировать файлы в /etс/zabbix, /usr/share/zabbix и накатить базу данных.
Во втором случае, перед восстановлением, фактически надо сделать установку zabbix c нуля и только потом копировать файлы из бэкапа.
Рассмотрим второй случай подробнее, процесс восстановления будет состоять из следующий шагов:
- Копируем бэкап на резервный сервер.
- Ставим свежий mysql.
- Восстанавливаем базу zabbix_db.
- Ставим zabbix сервер и агента.
- Восстанавливаем конфигурации zabbix сервера и агента.
- Ставим apache и certbot.
- Восстанавливаем конфигурации apache для вэб интерфейса zabbix.
Курсивом выделены шаги которые надо сделать если бы у нас уже был подготовлен резервный сервер.
Копируем бэкап
По scp копируем бэкап с server1 на server2 и разархивируем его.
[root@server2 ~]# mkdir src [root@server ~]# cd src/ [root@server2 src]# scp root@server1.mykb.ru:/backup/zabbix_server.tar.gz ./ root@server1.mykb.ru's password: zabbix_server.tar.gz 100% 22MB 10.9MB/s 00:02 [root@server2 src]# ll root@server2 src]# ll total 22380 -rw-r--r-- 1 root root 22915028 авг 4 22:45 zabbix_server.tar.gz [root@server2 src]# tar zxvf zabbix_server.tar.gz [root@server2 src]# cd zabbix_server [root@server2 zabbix_server]# ll total 63868 drwxr-xr-x 5 root root 4096 июн 19 17:59 etc_httpd drwxr-xr-x 8 root root 4096 июн 19 18:10 etc_letsencrypt drwxr-xr-x 4 root root 4096 авг 5 01:52 etc_zabbix drwxr-xr-x 13 root root 4096 июл 22 13:21 usr_share_zabbix -rw-r--r-- 1 root root 65382565 авг 5 12:14 zabbix_db.sql
Установка mysql
У нас есть свежий Centos7 на котором обновили все пакеты, включилт epel репозиторий и выключили selinux.
Ставим mysql.
[root@server2 ~]# yum install -y mariadb mariadb-server Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: mariadb x86_64 1:5.5.52-1.el7 base 8.7 M mariadb-server x86_64 1:5.5.52-1.el7 base 11 M Installing for dependencies: libaio x86_64 0.3.109-13.el7 base 24 k perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-DBD-MySQL x86_64 4.023-5.el7 base 140 k perl-DBI x86_64 1.627-4.el7 base 802 k perl-Data-Dumper x86_64 2.145-3.el7 base 47 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-Net-Daemon noarch 0.48-5.el7 base 51 k perl-PlRPC noarch 0.2020-14.el7 base 36 k Transaction Summary ========================================================================================================================================================================================= Install 2 Packages (+9 Dependent packages) Total download size: 21 M Installed size: 108 M ... Complete!
Включаем автозагрузку и запускаем mysql.
[root@server2 ~]# systemctl enable mariadb.service Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@server2 ~]# systemctl start mariadb
Делаем первоначальную настройку mysql.
[root@server2 ~]# /usr/bin/mysql_secure_installation
Установка mysql завершена, теперь создадим пустую бащу zabbix_db.
[root@server2 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database zabbix_db character set utf8 collate utf8_bin; Query OK, 1 row affected (0.03 sec) MariaDB [(none)]> grant all privileges on zabbix_db.* to zabbix_user@localhost identified by 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye
Восстановление базы данных
Заличаем базу.
[root@server2 zabbix_server]# date Сб авг 5 12:40:18 MSK 2017 [root@server2 zabbix_server]# mysql -u zabbix_user -p zabbix_db < zabbix_db.sql Enter password: [root@server2 zabbix_server]# date Сб авг 5 12:41:00 MSK 2017
База размером 65Мбайт залилась за 42 секунды.
Установка zabbix сервера и агента
Подключаем репозиторий zabbix.
[root@server2 zabbix_server]# rpm -i http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.bp7LnJ: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Ставим.
[root@server2 zabbix_server]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: zabbix-agent x86_64 3.2.7-1.el7 zabbix 345 k zabbix-server-mysql x86_64 3.2.7-1.el7 zabbix 1.8 M zabbix-web-mysql noarch 3.2.7-1.el7 zabbix 5.8 k Installing for dependencies: OpenIPMI-libs x86_64 2.0.19-15.el7 base 502 k OpenIPMI-modalias x86_64 2.0.19-15.el7 base 15 k dejavu-fonts-common noarch 2.33-6.el7 base 64 k dejavu-sans-fonts noarch 2.33-6.el7 base 1.4 M fontpackages-filesystem noarch 1.44-8.el7 base 9.9 k fping x86_64 3.10-4.el7 epel 46 k iksemel x86_64 1.4-6.el7 epel 50 k libX11 x86_64 1.6.3-3.el7 base 606 k libX11-common noarch 1.6.3-3.el7 base 162 k libXau x86_64 1.0.8-2.1.el7 base 29 k libXpm x86_64 3.5.11-3.el7 base 54 k libjpeg-turbo x86_64 1.2.90-5.el7 base 134 k libpng x86_64 2:1.5.13-7.el7_2 base 213 k libtool-ltdl x86_64 2.4.2-22.el7_3 updates 49 k libxcb x86_64 1.11-4.el7 base 189 k libxslt x86_64 1.1.28-5.el7 base 242 k net-snmp-libs x86_64 1:5.7.2-24.el7_3.2 updates 747 k php-bcmath x86_64 5.4.16-42.el7 base 57 k php-gd x86_64 5.4.16-42.el7 base 127 k php-ldap x86_64 5.4.16-42.el7 base 52 k php-mbstring x86_64 5.4.16-42.el7 base 505 k php-mysql x86_64 5.4.16-42.el7 base 101 k php-pdo x86_64 5.4.16-42.el7 base 98 k php-xml x86_64 5.4.16-42.el7 base 125 k t1lib x86_64 5.1.2-14.el7 base 166 k unixODBC x86_64 2.3.1-11.el7 base 413 k zabbix-web noarch 3.2.7-1.el7 zabbix 3.7 M Transaction Summary ========================================================================================================================================================================================= Install 3 Packages (+27 Dependent packages) Total download size: 12 M Installed size: 57 M ... Complete!
Восстанавливаем конфигурации zabbix
Бэкапы конфигураций у нас лежат в директориях etc_zabbix и usr_share_zabbix.
[root@server2 zabbix_server]# ll total 63868 drwxr-xr-x 5 root root 4096 июн 19 17:59 etc_httpd drwxr-xr-x 8 root root 4096 июн 19 18:10 etc_letsencrypt drwxr-xr-x 4 root root 4096 авг 5 01:52 etc_zabbix drwxr-xr-x 13 root root 4096 июл 22 13:21 usr_share_zabbix -rw-r--r-- 1 root root 65382565 авг 5 12:14 zabbix_db.sql [root@server2 zabbix_server]# ll etc_zabbix/ total 68 drwxr-x--- 2 apache apache 4096 июл 22 13:21 web -rw-r--r-- 1 root root 10363 авг 5 01:52 zabbix_agentd.conf -rw-r--r-- 1 root root 10339 июн 11 20:10 zabbix_agentd.conf~ drwxr-xr-x 2 root root 4096 июл 22 13:25 zabbix_agentd.d -rw-r----- 1 root zabbix 14886 июн 11 19:41 zabbix_server.conf -rw-r----- 1 root root 14876 май 6 03:32 zabbix_server.conf~ -r-------- 1 zabbix zabbix 73 авг 5 01:52 zbxpsk
Копируем
[root@server2 zabbix_server]# cp -rp etc_zabbix/ /etc/zabbix/ [root@server2 zabbix_server]# cp -rp usr_share_zabbix/ /usr/share/zabbix/
Устанавливаем apache и certbot
Ставим apache c поддержкой ssl.
[root@server2 zabbix_server]# yum install httpd mod_ssl
Включаем автозагрузуку и запускаем.
[root@server2 zabbix_server]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@server2 zabbix_server]# systemctl start httpd
Ставим обвязку для работы с Letsencrypt.
[root@server2 zabbix_server]# yum install python2-certbot-apache Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: python2-certbot-apache noarch 0.14.1-1.el7 epel 144 k Installing for dependencies: audit-libs-python x86_64 2.6.5-3.el7_3.1 updates 70 k augeas-libs x86_64 1.4.0-2.el7 base 355 k certbot noarch 0.14.1-3.el7 epel 19 k checkpolicy x86_64 2.5-4.el7 base 290 k dialog x86_64 1.2-4.20130523.el7 base 208 k libcgroup x86_64 0.41-11.el7 base 65 k libsemanage-python x86_64 2.5-5.1.el7_3 updates 104 k policycoreutils-python x86_64 2.5-11.el7_3 updates 445 k pyOpenSSL x86_64 0.13.1-3.el7 base 133 k python-IPy noarch 0.75-6.el7 base 32 k python-augeas noarch 0.5.0-2.el7 base 25 k python-backports x86_64 1.0-8.el7 base 5.8 k python-backports-ssl_match_hostname noarch 3.4.0.2-4.el7 base 12 k python-cffi x86_64 1.6.0-5.el7 base 218 k python-enum34 noarch 1.0.4-1.el7 base 52 k python-idna noarch 2.0-1.el7 base 92 k python-ipaddress noarch 1.0.16-2.el7 base 34 k python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k python-parsedatetime noarch 1.5-3.el7 epel 61 k python-ply noarch 3.4-10.el7 base 123 k python-psutil x86_64 2.2.1-1.el7 epel 114 k python-pycparser noarch 2.14-1.el7 base 104 k python-requests noarch 2.6.0-1.el7_1 base 94 k python-setuptools noarch 0.9.8-4.el7 base 396 k python-six noarch 1.9.0-2.el7 base 29 k python-urllib3 noarch 1.10.2-2.el7_1 base 100 k python-zope-component noarch 1:4.1.0-3.el7 epel 227 k python-zope-event noarch 4.0.3-2.el7 epel 79 k python-zope-interface x86_64 4.0.5-4.el7 base 138 k python2-acme noarch 0.14.1-1.el7 epel 170 k python2-certbot noarch 0.14.1-3.el7 epel 417 k python2-configargparse noarch 0.11.0-1.el7 epel 30 k python2-cryptography x86_64 1.3.1-3.el7 base 471 k python2-dialog noarch 3.3.0-6.el7 epel 94 k python2-future noarch 0.16.0-2.el7 epel 799 k python2-mock noarch 1.0.1-9.el7 epel 92 k python2-pyasn1 noarch 0.1.9-7.el7 base 100 k python2-pyrfc3339 noarch 1.0-2.el7 epel 13 k pytz noarch 2012d-5.el7 base 38 k setools-libs x86_64 3.3.8-1.1.el7 base 612 k Transaction Summary ========================================================================================================================================================================================= Install 1 Package (+40 Dependent packages) Total download size: 6.5 M Installed size: 27 M ... Complete!
Восстанавливаем корфигурацию apache и cetbot
Настройки apache для zabbix:
[root@server2 zabbix_server]# cat etc_httpd/conf.d/vhosts.conf NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName server.mykb.ru Redirect / https://server.mykb.ru/ </VirtualHost> <VirtualHost *:443> ServerName server.mykb.ru ServerAdmin someone@mykb.ru DocumentRoot /usr/share/zabbix ##### SSLEngine on SSLCertificateKeyFile /etc/letsencrypt/live/server.mykb.ru/privkey.pem SSLCertificateFile /etc/letsencrypt/live/server.mykb.ru/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/server.mykb.ru/chain.pem #### <Directory "/usr/share/zabbix"> Options FollowSymLinks AllowOverride None Require all granted <IfModule mod_php5.c> php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Europe/Moscow </IfModule> </Directory> <Directory "/usr/share/zabbix/conf"> Require all denied </Directory> <Directory "/usr/share/zabbix/app"> Require all denied </Directory> <Directory "/usr/share/zabbix/include"> Require all denied </Directory> <Directory "/usr/share/zabbix/local"> Require all denied </Directory> ErrorLog logs/mykb_error.log CustomLog logs/mykb_access.log common </VirtualHost>
Просто копируем файл vhosts.conf
[root@server2 zabbix_server]# cp -p etc_httpd/conf.d/vhosts.conf /etc/httpd/conf.d/vhosts.conf
Копируем файлы Letsencrypt.
[root@server2 zabbix_server]# cp -rp etc_letsencrypt/ /etc/letsencrypt/
Запускаем zabbix
Запускаем zabbix сервера и агента
[root@server2 zabbix_server]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. [root@server2 zabbix_server]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@server2 zabbix_server]# systemctl start zabbix-server [root@server2 zabbix_server]# systemctl start zabbix-agent
Переходи по ссылке прописанной в vhosts.conf и проверяем.
Если в ходе восстановления изменился ip адрес, то надо пройтись по всех хостам и его поменять.
Заключение
Переход на ssd диски помог, загрузка сильно упала.
Для регулярного бэкапа скрит не подходит, надо в него добавить оповещения, проверку на запуск zabbix сервер, версионность и копирование на третий сервер.