topic:zbx_backup

Бэкап и восстановление 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_secure_installation

Вывод mysql_secure_installation

[root@server2 ~]# /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!


Установка 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 сервер, версионность и копирование на третий сервер.


Полезные ссылки

topic/zbx_backup.txt · Last modified: 2021/08/12 08:35 (external edit)

Page Tools