UMGUM.COM (лучше) 

Bacula messages system ( Настройка системы журналирования и уведомления о событиях. )

12 ноября 2010  (обновлено 20 января 2019)

OS: "Linux Debian Lenny/Squeeze/Wheezy/Jessie/Stretch".
Application: "Bacula Dir 2.4/5.2/7.4".

В предыдущих примерах конфигурирования "Bacula" я не стал усложнять схему настройками системы уведомления о событиях, применив самую простую схему с параллельным выводом информации на консоль и в журнальный файл. Пришло время повысить информативность работы сервиса резервирования, задавшись целью реализовать отправку сообщений о статусе исполнения заданий администратору и оператору устройств хранения на электронную почту.


В блоке описания системы уведомления применимы директивы описания способа отправки сообщений и мест назначения.

Директивы описания способа оправки сообщения (для входящей в комплект поставки "Bacula" программы "bsmtp"):

  MailCommand - команда отправки сообщения, пример: "/usr/sbin/bsmtp -8 -h mx.example.net:25 -f bacula@example.net -r bacula@example.net -s \"Bacula: %t %e of %n %l\" %r"
  OperatorCommand - команда отправки сообщения оператору устройств хранения, пример: "/usr/sbin/bsmtp -8 -h mx.example.net -f bacula@example.net -r bacula@example.net -s \"Bacula: Intervention needed for %j\" %r"

Где опции утилиты "bsmtp":

  -8 - указание использовать кодировку utf-8;
  -h - указываем имя SMTP сервера и прослушиваемый порт;
  -f - устанавливаем значение поля "From:" в заголовке сообщения;
  -r - устанавливаем значение поля "Reply-To:" в заголовке сообщения;
  -s - устанавливаем значение поля "Subject:" в заголовке сообщения.

...и переменные окружения "Bacula", используемые в директиве "MailCommand":

  "%%" - %;
  "%c" - имя клиента;
  "%d" - имя директора;
  "%e" - код завершения (OK, Error, Fatal);
  "%i" - идентификатор задания;
  "%j" - уникальное имя задания;
  "%l" - тип резервирования (Full, Incremental, Differential, Base);
  "%n" - имя задания;
  "%r" - получатели сообщения;
  "%t" - тип задания (Backup, Restore).

В поле "From:" желательно указывать реальный почтовый адрес, зарегистрированный на используемом почтовом SMTP сервере.

Директивы указания респондентов и типов отчётов:

  Mail = recipient0@example.net, recipient1@example.net, ... = All, !skipped - общего набора сообщений (в качестве параметров указывается список получателей через запятую, после знака "=" - список типов сообщений через запятую);
  Operator = recipient0@example.net = mount - набора сообщений оператору устройств хранения с требованием смены носителей.

Используя вышеописанные директивы строим блок обработки сообщений:

# vi /etc/bacula/bacula-dir.conf

....
# # Блок описания подсистемы отправки уведомлений о состоянии сервиса "Director Daemon":

Messages {
  Name = Standard
  Console = all, !skipped, !saved
  Append = "/var/log/bacula/bacula.log" = all, !skipped
  MailCommand = "/usr/sbin/bsmtp -8 -h mx.example.net:25 -f bacula@example.net -s \"Bacula: %t %e of %n %l\" %r"
  OperatorCommand = "/usr/sbin/bsmtp -8 -h mx.example.net:25 -f bacula@example.net -s \"Bacula: Intervention needed for %j\" %r"
  Mail = admin@example.net = all, !skipped
  Operator = oper@example.net = mount
  # Syslog = all
}
....

Проверим корректность конфигурации средствами самого "Bacula":

# bacula-dir -c /etc/bacula/bacula-dir.conf -t

Укажем "Bacula" перечитать и принять новую конфигурацию:

# /etc/init.d/bacula-director reload

Теперь респондентам директивы "Mail" будет приходить полный отчёт о событиях сопровождающих исполнение заданий после их завершения, успешного или нет. Утилита "bsmtp" сама сделает полную выборку событий применительно к отрабатываемому заданию. Выглядеть письмо будет примерно следующим образом:

27-Jul 16:42 dir0.backup.local JobId 402: Start Backup JobId 402, Job=job-backup-test.domain.local.2010-07-27_16.42.54.54
....
27-Jul 17:51 dir0.backup.local JobId 402:
  Build OS:               x86_64-pc-linux-gnu debian lenny/sid
  JobId:                  402
  Job:                    job-backup-test.domain.local.2010-07-27_16.42.54.54
  Backup Level:           Incremental, since=2010-07-22 19:33:18
  ....
  FD Bytes Written:       873,260,844 (873.2 MB)
  SD Bytes Written:       874,459,833 (874.4 MB)
  ....
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK
....

Респондентам директивы "Operator" будет приходить уведомление о необходимости сменить носитель информации: ленту "стриммера", DVD диск, подключаемый диск. Вид сообщения примерно такой:

01-Aug 18:20 sd0.backup.local JobId 470: Please mount Volume "test0.domain.local-0074" or label a new one for:
  Job:         job-backup-test0.domain.local.2010-08-01_18.20.23.03
  Storage:     "dev4.sd0.backup.local" (/mnt/storage0/bacula/dev4)
  Pool:        pool-test0.domain.local
  Media type:  DVDRW

Кстати, Bacula будет слать оператору просьбы сменить носитель так же в общем случае, если таковой недоступен. То есть, если дисковый массив Терабайт эдак на пятьдесят, предположим, недоступен, оператора попросят сменить этот самый массив на другой.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )