Настройка бэкап Zabbix с Docker в Blackblaze

Blackblaze logo

Если у вас Zabbix крутится на докере и вы используете облачный сервис Blackblaze — то данная статья однозначно поможет вам. Хотя, суть данной статьи даже не в заббиксе или докере — а в том, что бы настроить бекап данных в Blackblaze.

В продолжении предыдущей статьи Zabbix на Docker

Что я имею:

  • Centos 7 (применимо и на других Unix системах, просто команды будут немного другие)
  • Zabbix 4.4.2
  • Docker
  • Blackblaze (потому что хранилище на 10ГБ бесплатное + можно настроить время хранения файлов)

Для начала давайте на сервере установим python и настроим Blackblaze.

yum install python-pip 
pip install --upgrade b2

Возможны проблемы:

  1. bash: pip: команда не найдена — Поможет команда yum install epel-release
  2. Command «python setup.py egg_info» failed with error code 1 in /tmp/pip-build-UsN_Zc/b2/ — Поможет команда pip install —upgrade setuptools

Если все получилось — идем дальше:

b2 authorize_account keyID

keyID — можно взять в вашем аккаунте Blackblaze в разделе App Keys Первым делом генерируем новый главный ключ — Создать новый главный ключ приложения

Blackbaze key

И получаем keyID и applicationKey

Blackbaze keyid and applicationkey

applicationKey — Нужно будет ввести после команды b2 authorize_account keyID

Если все получилось, командой b2 list_buckets вы получите список всех своих Бакетов (с раздела Buckets). Если там ничего нет — создайте один.


Отлично, аккаунт B2 подвязали — теперь осталось написать скрипт который будет делать бекап нужных файлов и заливать на B2.

Для этого:

  1. Создаем папку для бекапов — mkdir /usr/backups/
  2. Переходим в эту папку — cd /usr/backups/
  3. Создаем sh файл, командой mcedit script.sh (Можно и через touch — но мне нравится mc редактор, установить его можно через yum install mc)
  4. Закидаем туда скрипт:

    #!/bin/bash
    
    DAY=`date +%m-%d`
    
    rsync -v -az /usr/Zabbix/src/ /etc/backups/zabbix_server
    
    tar -czvf /etc/backups/zabbix_server_$DAY.tar.gz -C /etc/backups/ zabbix_server
    
    sleep 3
    
    b2 upload_file zabbix-centos /etc/backups/zabbix_server_$DAY.tar.gz backups/zabbix_server_$DAY.tar.gz
    
    sleep 3
    
    rm -Rfv /etc/backups/zabbix_server_$DAY.tar.gz
    

/usr/Zabbix/src/ — Здесь у меня лежат файлы от Zabbix которые дает мне Docker /etc/backups/zabbix_server — Сюда создаем папку и копируем файлы b2 upload_file zabbix-centos — zabbix-centos название моего Бакета в B2 (у вас он может называться по другому)

  1. Делаем файл исполняемым chmod +x script.sh
  2. ВАЖНО установите программу yum install rsync — которая нужна для переноса файлов с одной папки в другую
  3. Запускаем и проверяем или заливаются файлы в Бакет — sh script.sh

Если все сделали правильно — должны получить примерно такой вывод в консоли + в личном кабинете Blackblaze в вашем Бакете должен появится файл с бекапом.

Blackbaze logs

Смотрим в Бакет B2

Blackbaze backup

P.S. Ежедневный бекап — вам поможет сделать обычный Cron, который будет запускать данный скрипт по времени.

P.S. Раньше у меня был Zabbix не в докере, он был просто установлен на сервере Centos 7. Для его бэкапа я использовал данный скрипт, он немного больше предыдущего, так как нужно было делать дамп базы данных. Возможно кому-то приходится в будущем.

#!/bin/bash

ROPT="-v -az"
DAY=`date +%m-%d`

#RSYNC
rsync $ROPT  /etc/zabbix/ /etc/backups/zabbix_server/etc_zabbix
rsync $ROPT /usr/share/zabbix/ /root/backup/zabbix_server/usr_share_zabbix
rsync $ROPT /etc/httpd/ /root/backup/zabbix_server/etc_httpd

#STOP ZABBIX
echo "Stop Server"
systemctl stop zabbix-server
sleep 3

#MYSQLDUMP
echo "Start Mysqldump"
mysqldump -u root -pVfnmDfie! zabbix > /root/backup/zabbix_server/zabbix.sql

#START ZABBIX
echo "Start Server"
systemctl start zabbix-server

#TAR
echo "Start tar"
tar -czvf /root/backup/zabbix_server_$DAY.tar.gz -C /root/backup/ zabbix_server

sleep 3
b2 upload_file zabbix-centos /root/backup/zabbix_server_$DAY.tar.gz backups/zabbix_server_$DAY.tar.gz

sleep 3
rm -Rfv /root/backup/zabbix_server_$DAY.tar.gz
rm -Rfv /root/backup/zabbix_server/etc_httpd /root/backup/zabbix_server/etc_zabbix /root/backup/zabbix_server/usr_share_zabbix /root/backup/zabbix_server/zabbix.sql
</doce>
comments powered by Disqus