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 - Posted by | Заметки..., Linux |

5 комментариев »

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

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

  2. стоит ubuntu 9.10, добавил e-mail нотификацию аналогично приведенной в Вашем примере:
    $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

    Приходит несколько SMTP сообщений, затем rsyslog совсем перестает писать логи. После /etc/init.d/rsyslog restart некоторое время все работает нормально, затем история повторяется. Перепробовал все примеры из Ваших статей, та же лажа. При отключении модуля ommail и рестарта rsyslog нормально пишет и в файлы и в базу. Куда копать?

    комментарий от vatrushkin | Март 20, 2010

  3. Трудно так сразу сказать.
    Наверное можно попробовать максимально упростить конфиг нотификации. Примеры можно попробовать взять не с моего блога, а с сайта Рсислог.ком.

    В конце концов запостить свои конфиги сюда в комменты, или на форумы http://kb.monitorware.com/
    Последний вариант предпочтительно, т.к. там больше людей смогут посмотреть. Но нужно на английском описать проблему.

    комментарий от Ded_mazday | Март 20, 2010

  4. в /etc/rsyslog.d/postfix.conf есть директива, там вообще только одна директива:
    $AddUnixListenSocket /var/spool/postfix/dev/log
    чую этот сокет переполняется и каким то образом влияет на работу rsyslog. Спасибо за статьи и оперативный ответ.

    комментарий от vatrushkin | Март 21, 2010

  5. Heya i am for the first time here. I came across this board and I in finding It really helpful & it helped me out much.
    I am hoping to provide something back and help others such as you aided me.

    комментарий от internet | Апрель 13, 2013


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: