Email нотификация RSyslog с фильтрацией сообщений для разных получателей.
Данный пост продолжает тему использования 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
Если кто заметил неточности или у когото появились вопросы – велком, всегда раз помочь.
Комментариев нет.
Оставить комментарий
« Ранее |

