BackTracker - бот для контроля своевременности резервного копирования

Публикация № 702609

Администрирование - Архивирование (backup)

telegram bot backup admin резервное копирование оповещение контроль linux python

12
Когда речь заходит о резервном копировании, паранойи много не бывает. Допустим, Вы настроили бэкап PostgreSQL в сетевое NAS хранилище. Проверили, скрипт работает, все хорошо, ежедневные бэкапы, глубина хранения и всё такое. Но в какой-то момент что-то пошло не так, и важно не упустить этот момент, как можно быстрее всё исправить. Поможет в этом специально обученный Telegram бот.

Думаю, что немало админов приспосабливают технику "второй свежести" под NAS. Есть, наверное, разные рецепты приготовления NAS из того, что было, мне лично нравится рецепт с использованием исключительно свободных инградиентов.

Берем 2-3 офисных ветерана, перетряхиваем, выбираем их них всё самое лучшее, а иногда и просто живое, очищаем от пыли, ставим Linux, настраиваем программный RAID-1, поднимаем SSH и Samba, по вкусу добавляем Webmin и ветеран готов служить еще лет 5, обеспечивая сохранность резервных копий.

Те, кто хоть раз в жизни оказывались в ситуации, когда нужно было восстановиться из резервной копии, а её не было знают, что недостаточно просто настроить путь, куда складывать бэкапы. Как минимум, нужно периодически проверять, что они там появляются в назначенное время. Обычно админ раз в неделю/месяц/год заглядывает на NAS и смотрит на даты резервных копий. Метод не очень надежный, потому, что сильно зависит от человеческого фактора.

А у нас же есть целый сервер, который почти ничем не занят 99% времени, давайте поручим ему самому смотреть туда, где должны появляться резервные копии по расписанию и писать админу телеграммы, о том, что все хорошо, или что-то пошло не так. Админ будет получать эти телеграммы по дороге на работу и знать, что ночной бэкап отработал штатно и все хорошо, или же наоборот, что-то пошло не так, первое, чем ему надлежит заняться придя на работу - это вчерашние резервные копии.

Для этого нам понадобиться:

  1. Консоль Linux
  2. Python - он уже у нас есть, устанавливается по-умолчанию со всеми дистрибутивами Linux
  3. Git - аналогично
  4. Telegram bot - подробнее о них см. тут
  5. Ну и разумеется мессенджер Telegram, которым мы и будем принимать телеграммы от гиппопотама NAS

Открываем консоль, идем в домашнюю папку и клонируем себе скрипт из GitHub

$ cd ~
$ git clone https://github.com/kuleshovdv/backtracker.git
$ cd backtracker

Установим модуль python-telegram-bot, напоминаю, что установщик pip должен работать от root или с правами суперпользователя.

$ sudo pip install python-telegram-bot

Теперь обратимся к Отцу Ботов (@botfather, в Telegram кликнуть telegram.me/botfather) и создадим себе нового бота.

Запишем полученный токен нового бота в конфигурационный файл

$ nano backtracker.conf

и сконфигурируем прочие параметры работы скрипта

[Telegram]
token = 475789166:AAFXRE_e_GR5HUnsfpAgsgsd8fgwegUvMrakY  # токен, полученный от Отца Ботов
failonly = False  #True если отправлять сообщения только когда что-то пошло не так, False - сообщать о каждом сканировании

[Scan]
path = /home/kuld/backups  # сканируемая папка с резервными копиями
hours = 8  # свежесть резервных копий в часах, если нет файлов свежее указанного - это сигнал тревоги

Теперь нужно настроить получателя телеграмм. Запускаем утилиту.

$ ./backtracker.py
В конфигурационном файле не указан ChatID для отправки сообщений о результатах сканирования.
Отправьте своему боту команду /start для автоматического определения ChatID.

Конфигурация успешно сохранена. Запустите утилиту повторно для сканирования папок
$

При первом запуске производится автонастройка получателя. Отправьте своему боту команду /start, все остальное будет сделано автоматически. Скрипт готов к работе, запустите его еще раз.

Остается только добавить его вызов в crontab, что бы демон cron запускал его по расписанию через пару часов после планового резервного копирования.

Кстати, если папок для сканирования и/или получателей несколько, можно сделать разные conf файлы. С каким именно конфигурационным файлом работать скрипту указывается в командной строке.

$ ./backtracker.py backtracker.conf
12

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. viptextil 35 22.11.17 08:32 Сейчас в теме
А отправка логов на почту Вас чем не устраивает? Вот, не поверю, что сисадмины не пользуются почтой...
2. kuld 364 22.11.17 10:39 Сейчас в теме
(1) Это для тех сисадминов, которые хотят в телеграм
Оставьте свое сообщение