admin.txt

… заметки IT’шника…

E-mail нотификация RSyslog, используя smtp без авторизации.

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

rsyslog-mailRSyslog позволяет гибко настроить e-mail нотификацию по определенным условиям. Для нотификации используется smtp сервер, не требующий авторизации. Для использования нотификации необходимо подключить модуль ommail и сконфигурировать параметры (получателя, сервер, тему, тело письма и др.). Приведенные ниже настройки вносятся в основной конфигурационный файл /etc/rsyslog.conf (либо в *.conf файл в папке /etc/rsyslog.d/ в случае подключения дополнительных конфигурационных файлов директивой основного файла: $IncludeConfig /etc/rsyslog.d/*.conf ).

Конфигурационные директивы почтового модуля ommail для RSyslog:

  • $ActionMailSMTPServer – имя или адрес SMTP сервера
  • $ActionMailSMTPPort – порт SMTP сервера (по умолчанию 25)
  • $ActionMailFrom – от кого сообщение
  • $ActionMailTo – получатель сообщения, дня множественных получателей необходимо повторить директиву нужное количество раз. По умолчанию не определена и должна определятся для каждого нового действия (автоматически сбрасывается).
  • $ActionMailSubject – имя шаблона, для формирования темы письма. Если не определено – то тема будет сгенерирована автоматически.
  • $ActionMailEnableBody – установить в «off», что бы исключить само тело письма (для SMS нотификации например). По умолчанию в состоянии «on». Отключать только узкоспециализированных случаях.
  • $ActionExecOnlyOnceEveryInterval <seconds> – рекомендуемый параметр, ограничивающий частоту генерации почтовых сообщений (предотвращает нежелательное заспамливание сервера).

Например:

$ModLoad ommail
$ActionMailSMTPServer mail-1.firma.corp
$ActionMailFrom RSyslog server
$ActionMailTo p.kryuchok@firma.com
$ActionMailTo it@firma.com
$template mailSubject,"rsyslog: disk problem on %hostname%"
$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
# make sure we receive a mail only once in six hours (21,600 seconds ;))
$ActionExecOnlyOnceEveryInterval 21600
# the if ... then ... mailBody mus be on one line!
if $msg contains 'hard disk fatal failure' then :ommail:;mailBody

Данная конфигурация будет не чаще, чем единожды за 6 часов, отправлять нотификацию на указанные email адреса, если в обрабатываемых сообщениях появится фрагмент ‘hard disk fatal failure’.

Пример обработки нескольких событий для нотификации, используя локальный SMTP-сервер с адресом 192.168.4.22. Необходимо отметить, что получателя необходимо объявлять для каждого случая нотификации, т.к. этот параметр автоматически сбрасывается :


$ModLoad ommail
$ActionMailSMTPServer 192.168.4.22
$ActionMailFrom rsyslog
$ActionMailTo p.kryuchok@firma.com
$template mailSubject,"RsysLog: Apache activity on %hostname%"
$template mailBody,"RSYSLOG mail-notification\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 2
if $msg contains 'apache' then :ommail:;mailBody
#######################################################
$ActionMailSMTPServer 192.168.4.22
$ActionMailFrom rsyslog
$ActionMailTo p.kryuchok@firma.com
$template mailSubject2,"RsysLog: Notice on %fromhost%"
$template mailBody2,"RSYSLOG2 mail-notification\r\nmsg='%msg%'"
$ActionMailSubject mailSubject2
$ActionExecOnlyOnceEveryInterval 600
if $msg contains 'authenticated mount' then :ommail:;mailBody2

Так же, имеется возможность настройки «надежной» нотификации. Например, в случае недоступности почтового сервера, можно хранить сообщения в локальном буфере и отправить их, как только сервер снова будет доступен:

# SMTP with retry
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
$WorkDirectory /rsyslog/spool # where to place spool files
$ActionQueueFileName uniqName # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1 # infinite retries if host is down
$ActionMailSMTPServer mail.example.net
$ActionMailFrom rsyslog@example.net
$ActionMailTo operator@example.net
$ActionMailSubject mailSubject
# make sure we receive a mail only once in six
# hours (21,600 seconds ;))
$ActionExecOnlyOnceEveryInterval 21600
# the if ... then ... mailBody mus be on one line!
if $msg contains 'hard disk fatal failure' then :ommail:;mailBody

Дополнительная информация доступна на офф.сайте http://www.rsyslog.com/doc-ommail.html , который  и послужил основным источником информации.

Декабрь 30, 2008 - Опубликовал Ded_mazday | Linux, Заметки... | | 1 комментарий

1 комментарий »

  1. [...] прошлом посте я писал об основах конфигурирования модуля для отправки почты. Сейчас, уже поработав  некоторое время с данной [...]

    Уведомление от Email нотификация RSyslog с фильтрацией сообщений для разных получателей. « admin.txt | Май 14, 2009


Оставить комментарий