Syslog-ng mail: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Linux]] |
||
+ | [[Категория:Syslog-ng]] |
||
=syslog-ng: отправка сообщений на почту при наступлении события= |
=syslog-ng: отправка сообщений на почту при наступлении события= |
||
Задача: при наступлении определенного события отправить на почту администратору уведомление. |
Задача: при наступлении определенного события отправить на почту администратору уведомление. |
||
Строка 38: | Строка 40: | ||
close MAILER; |
close MAILER; |
||
} |
} |
||
+ | </PRE> |
||
+ | ==Еще одно решение== |
||
+ | http://forum.sysfaq.ru/index.php?showtopic=18100 ( не проверял) |
||
+ | <PRE> |
||
+ | destination alert-by-mail { program("/usr/bin/perl -pe '' | /usr/bin/mail address"); }; |
||
</PRE> |
</PRE> |
||
==Альтернатива== |
==Альтернатива== |
Текущая версия на 10:31, 24 июня 2010
syslog-ng: отправка сообщений на почту при наступлении события
Задача: при наступлении определенного события отправить на почту администратору уведомление. В моем случае я хотел оповещять начальника ремонтной бригады о появлении петли в неуправляемом сегменте сети. Коммутаторы (DES-35xx) настроены на отправку сообщений в сислог.
syslog-ng.conf
Фильтр для выделения нужных событий
filter f_loop_detected { match("LBD loop occurred. Port blocked"); };
Получатель для локального сохранения (кроме как в отдельный файл длдя каждого свитча, все такие события запишуться еще и в отдельный файл)
destination d_loop_detected { file("/var/log/loop_detected.log"); };
Получатель "почтовый скрипт"
destination d_mailto_support { program("/bin/syslog-mail"); };
mailscript
#!/usr/bin/perl # file: syslog-mail # spec: reads a line of input and mails it, designed to be a destination for syslog-ng use strict; $0='syslog-mail'; $|=1; while (my $msg = <STDIN>) { my ($pri,$date,$host,$esrc,$evid,$emsg) = $msg =~ m/<(\d{3})>(\w{3} \d{1,2} \d{2}:\d{2}:\d{2}) ([\w\.\-]+) ([\w ]+)\[(\d+)\] (.+)/o; open MAILER,'|/usr/sbin/sendmail support@mydomain.tld'; print MAILER "Subject: syslog: Alert: loop detected!!! \nInfo:\n$msg"; # print MAILER "Subject: syslog: $host $esrc $evid\n\n$emsg\n----\n$msg"; close MAILER; }
Еще одно решение
http://forum.sysfaq.ru/index.php?showtopic=18100 ( не проверял)
destination alert-by-mail { program("/usr/bin/perl -pe '' | /usr/bin/mail address"); };
Альтернатива
Можно использовать snmptrapd + snmptt (при наличии трапа на событие. В моем случае трап есть)