admin.txt

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

Email нотификация RSyslog с фильтрацией сообщений для разных получателей.

rsyslog-mailДанный пост продолжает тему использования  Email нотификаций (через SMTP) о событиях полученных демоном RSyslog. Однозначно и с уверенностю могу сказать, что сидеть в веб-интерфейсе (phpLogCon) и постоянно просматривать текущие события – дело нудное и бесполезное. Если вы хотите получить реальную пользу от внедрения RSyslog, то нужно делать почовую нотификацию на заинтересованных лиц (админов конретных сервисов/серверов).

В прошлом посте я писал об основах конфигурирования модуля для отправки почты. Сейчас, уже поработав  некоторое время с данной системой, могу выложить мой текущий конфиг. В этом конфиге я отсылаю разные сообщения на разные ящики и могу отсеивать не нужные нотификации. Фильтрация сообщений основана на Facility.Serverity классификации, плюс фильтрация на основе вхождения в текст сообщения определенного текста. Первая часть конфига – общая, служит для отправки уведомлений на сообщения с уровнем важности (serverity) начиная от err (ошибка), в не зависимости от источника (facility) события. Вторая часть – нотификация сетевого админа о событиях на коммутационном оборудовании, которое шлет сообщения с facility=local7. Дополнительно, на нотификации от коммутаторов уровень важности включает еще и предупреждения. Одинаково в обоих случаях реализована фильтрация сообщений, используя конструкцию:

if not ($msg contains 'Кусок текста по которому фильтуем').........
Ну и сам формат файла я приспособил к построчному коментированию и расширению. Дело в том, что условие выборки и отправки нотификации должно быть одной строкой (для парсера rsyslog’а), поэтому разбив эту строку на отдельные условия, я завершил каждую не последнюю сроку обратным слешем («\«), маскирующим последующий символ конца строки. В итоге теперь легко комменить строки и расширять/изменять конфиг.

После внесения изменений в конфиг необходимо перезапустить демона, коммандой:

/etc/init.d/rsyslog restart

А потом желательно убедиться, что в конфиге не обнаружено ошиок и демон запустился. Я для этого смотрел последние события на вебинтерфейсе, где появлялось сообщение о перезагрузке сервера (в моем случае rsyslog обрабатывает и события локальной системы).

Пример моего конфигурационного файла notify.cong (подключаемого в основной конфиг из папки /etc/rsyslog.d/):

$ModLoad ommail
##################part-1########################################
$ActionMailSMTPServer mail-serv
$ActionMailSMTPPort 25
$ActionMailFrom rsyslog@myfirm.com
$ActionMailTo it.logs@myfirm.com
$template mySubject1,"On host %hostname%, Error-level by serverity"
$template myBody1,"Facility.Serverity: %syslogfacility%.%syslogpriority% at %timegenerated% on host: %HOSTNAME%\r\n %msg%"
$ActionMailSubject mySubject1
#seconds interval for mailing
$ActionExecOnlyOnceEveryInterval 10
#expression based filter
if not ($msg contains 'TopLevelSystem'\
or $msg contains 'getConnectorInfo'\
or $msg contains 'failed - Data stale'\
or $msg contains 'DatadiscoveryfailedforConnector' )\
and ($syslogseverity-text =='err'\
or $syslogseverity-text =='crit'\
or $syslogseverity-text =='alert'\
or $syslogseverity-text =='emerg' )\
then :ommail:;myBody1
########################part-2#####################################
$ActionMailSMTPServer 192.168.1.16
$ActionMailSMTPPort 25
$ActionMailFrom rsyslog-local7@myfirm.com
$ActionMailTo net.admin@myfirm.com
$template mySubject2, "On switch %hostname%, local7 facility event"
$template myBody2,"Facility.Serverity: %syslogfacility%.%syslogpriority% at %timegenerated% on host: %HOSTNAME%\r\n %msg%"
$ActionMailSubject mySubject2
#seconds interval for mailing
$ActionExecOnlyOnceEveryInterval 10
if not ($msg contains 'is now online'\
or $msg contains 'is now off-line'\
or $msg contains 'collision or drop rate'\
or $msg contains 'is Blocked by STP' )\
and ($syslogfacility-text =='local7')\
and ($syslogseverity-text =='warning'\
or $syslogseverity-text =='err'\
or $syslogseverity-text =='crit'\
or $syslogseverity-text =='alert'\
or $syslogseverity-text =='emerg')\
then :ommail:;myBody2

PS
Если кто заметил неточности или у когото появились вопросы – велком, всегда раз помочь.

Май 14, 2009 - Опубликовал Ded_mazday | Linux | , | No Comments Yet

Комментариев нет.

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