Sunday, November 19, 2017

Простые уведомления в Telegram из Bareos

             

Bareos настроен, есть несколько хостов которые бэкапятся по расписанию, вроде все хорошо. Но через пару месяцев, когда потребовался определенный бэкап, выясняется что уже неделю как копирование не осуществляется. Ясно что необходимо не только снимать копии, а еще и мониторить все это дело. Кроме того, сняв копию нужно убедиться что она полностью рабочая. Но для начала неплохо было бы просто получать алерты от систем резервного копирования с информацией о статусе копирования или о сбоях.
С Bareos устанавливается плагин bsmtp, он подходит в случае если есть корпоративный почтовый сервер, принимающий без smtp auth письма от хоста bareos.  Gmail.com, yandex.ru, все эти сервисы требуют сейчас авторизации для отправки писем. Поскольку своего сервера под рукой нет, а поднимать рилэй не хочется, пытался решить проблему с использованием ssmtp. Пока не получилось, однако с Telegram подружить оказалось намного проще.
Достаточно просто ввести в конфигурацию Bareos строчку с CURL запросом.

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"_здесь_id_чата_","text":"_здесь_сообщение_"}' "https://api.telegram.org/bot_здесь_токен_бота_/sendMessage"

На случай если бота еще нет, его легко создать, займет меньше времени чем регистрация нового о почтового ящика в Яндексе. В сети полно информации о том как это сделать, если коротко, то:

  • В телеграме ищем @BotFather
  • Создаем с помощью команды /newbot нового бота
  • BotFather выдает уникальный token бота, это информация по идее секретная, ей лучше не раскидываться. Можно сразу зайти по ссылке https://api.telegram.org/bot_здесь_токен_бота_/sendMessage и посмотреть результат. Должно быть "Bad Request: message text is empty".
  • Дальше нужно вступить в контакт с ботом, написать ему что-либо. Это такая защита от спама, чтобы боты не лезли к людям сами.
  • Для того чтобы бот нам мог отправить сообщение, нужно знать наш id (в принципе можно использовать имя пользователя). Для этого идем к боту @MyTelegramID_bot и узнаем заветные цифры.
Все необходимое у нас есть, можно проверить используя вышеприведенный запрос curl. Бот должен прислать сообщение.


Теперь можно вставить строчку в конфиг. У меня это
/etc/bareos/bareos-dir.d/messages/Standard.conf
Хотя наверное лучше standard не трогать и создать свой.

Messages {
  Name = Standard
  Description = "Reasonable message delivery -- send most everything to email address and to the console."
  operatorcommand = "/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \<%r\>\" -s \"Bareos: Intervention needed for %j\" %r"
  mailcommand = "curl --header 'Content-Type: application\/json' --request 'POST' --data '\{\"chat_id\":\"_здесь_id_чата_\",\"text\":\"Bareos: %t %e of %c %l\"\}' \"https:\/\/api.telegram.org\/bot_здесь_токен_бота_\/sendMessage\"
  operator = root@localhost = mount                                 # (#03)
  mail = root@localhost = all, !skipped, !saved, !audit             # (#02)
  console = all, !skipped, !saved, !audit
  append = "/var/log/bareos/bareos.log" = all, !skipped, !saved, !audit
  catalog = all, !skipped, !saved, !audit

}

Перезапускаем сервис bareos-dir
service bareos-dir restart
Все должно работать.



3 comments: