UMGUM.COM (лучше) 

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

12 ноября 2010  (обновлено 31 января 2015)

OS: Linux Debian Lenny/Squeeze/Wheezy.
Application: Bacula v.3.2/v.5.2.

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

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

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


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

Где:

Опции утилиты "bsmtp":

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

Переменные окружения Bacula используемые в директиве "Mail Command":

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

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

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

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

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

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

....
# Описание основного блока обработки сообщений сервисов Bacula
Messages {
  Name = Standard
  Mail Command = "/usr/sbin/bsmtp -8 -h mx.smtp.domain.local:25 -f bacula@domain.local -s \"Bacula: %t %e of %c %l\" %r"
  Operator Command = "/usr/sbin/bsmtp -8 -h mx.smtp.domain.local:25 -f bacula@domain.local -s \"Bacula: Intervention needed for %j\" %r"
  Console = all, !skipped, !saved
  Append = "/var/lib/bacula/log" = all, !skipped
  Mail = recipient0@domain.local, recipient1@domain.local = all, !skipped
  Operator = recipient0@domain.local = 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 16:42 dir0.backup.local JobId 402: Using Device "dev1.sd0.backup.local"
27-Jul 16:43 test.domain.local JobId 402: DIR and FD clocks differ by 42 seconds, FD automatically compensating.
27-Jul 16:42 sd0.backup.local JobId 402: Volume "test.domain.local-0045" previously written, moving to end of data.
27-Jul 16:42 sd0.backup.local JobId 402: Ready to append to end of Volume "test.domain.local-0045" size=25262298577
....
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
  Client:                 "client-test.domain.local"
  FileSet:                "file-set-test.domain.local" 2010-07-20 13:57:36
  Pool:                   "pool-test.domain.local" (From Job resource)
  Storage:                "dev1.sd0.backup.local" (From Job resource)
  Scheduled time:         27-Jul-2010 16:42:52
  Start time:             27-Jul-2010 16:42:55
  End time:               27-Jul-2010 17:51:02
  Elapsed time:           1 hour 8 mins 7 secs
  Priority:               10
  FD Files Written:       4,139
  SD Files Written:       4,139
  FD Bytes Written:       873,260,844 (873.2 MB)
  SD Bytes Written:       874,459,833 (874.4 MB)
  Rate:                   213.7 KB/s
  Software Compression:   27.4 %
  VSS:                    yes
  Storage Encryption:     no
  Volume name(s):         test.domain.local-0045
  Volume Session Id:      31
  Volume Session Time:    1279868704
  Last Volume Bytes:      26,137,607,336 (26.13 GB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

27-Jul 17:51 dir0.backup.local JobId 402: Begin pruning Jobs.
27-Jul 17:51 dir0.backup.local JobId 402: No Jobs found to prune.
27-Jul 17:51 dir0.backup.local JobId 402: Begin pruning Files.
27-Jul 17:51 dir0.backup.local JobId 402: No Files found to prune.
27-Jul 17:51 dir0.backup.local JobId 402: End auto prune.

Респондентам директивы "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/storage/bacula/dev4)
  Pool:         pool-test0.domain.local
  Media type:   DVDRW

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

Вот и хорошо, теперь нет необходимости использовать bconsole для контроля исполнения заданий.


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


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