Настройка бэкап Zabbix с Docker в Blackblaze
Если у вас 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
Возможны проблемы:
bash: pip: команда не найдена
— Поможет командаyum install epel-release
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
Первым делом генерируем новый главный ключ — Создать новый главный ключ приложения
И получаем keyID
и applicationKey
applicationKey
— Нужно будет ввести после команды b2 authorize_account keyID
Если все получилось, командой b2 list_buckets
вы получите список всех своих Бакетов (с раздела Buckets). Если там ничего нет — создайте один.
Отлично, аккаунт B2 подвязали — теперь осталось написать скрипт который будет делать бекап нужных файлов и заливать на B2.
Для этого:
- Создаем папку для бекапов —
mkdir /usr/backups/
- Переходим в эту папку —
cd /usr/backups/
- Создаем sh файл, командой mcedit
script.sh
(Можно и через touch — но мне нравится mc редактор, установить его можно черезyum install mc
) Закидаем туда скрипт:
#!/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 (у вас он может называться по другому)
- Делаем файл исполняемым
chmod +x script.sh
- ВАЖНО установите программу
yum install rsync
— которая нужна для переноса файлов с одной папки в другую - Запускаем и проверяем или заливаются файлы в Бакет —
sh script.sh
Если все сделали правильно — должны получить примерно такой вывод в консоли + в личном кабинете Blackblaze в вашем Бакете должен появится файл с бекапом.
Смотрим в Бакет B2
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>