Nagios отправка Warning`ов по e-mail (Стандартные инструкции в сети не подходят)
Модератор: Модераторы разделов
Nagios отправка Warning`ов по e-mail
Доброго времени суток коллеги!
Столкнулся с такой проблемой, на сервере установил и настроил Nagios, разобрался с конфигурационными файлами, но вот не в какую не хочет отчёты слать об ошибках на почту. Почта через Exchange server работает. Те маны, что нашёл в сети результата не дают. Если кто сталкивался, подскажите
з.ы. Нужно ли на настраивать непосредственно почтовую программу на сервере для этого?
Столкнулся с такой проблемой, на сервере установил и настроил Nagios, разобрался с конфигурационными файлами, но вот не в какую не хочет отчёты слать об ошибках на почту. Почта через Exchange server работает. Те маны, что нашёл в сети результата не дают. Если кто сталкивался, подскажите
з.ы. Нужно ли на настраивать непосредственно почтовую программу на сервере для этого?
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Re: Nagios отправка Warning`ов по e-mail
step_slim
Смотрим commands.cfg
Т.е. он банально пайпом в mail отправляет, тут все ясно по-моему.
Я бы порекомендовал отправлять оповещения не на email, а себе на джаббер для более быстрого реагирования на ситуацию.
По дефолту nagios джаббер не умеет, я сделал так:
commands.cfg
notify_via_jabber - это небольшой perl скрипт, непосредственно отправляющий оповещения
Смотрим commands.cfg
Код: Выделить всё
# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
Т.е. он банально пайпом в mail отправляет, тут все ясно по-моему.
Я бы порекомендовал отправлять оповещения не на email, а себе на джаббер для более быстрого реагирования на ситуацию.
По дефолту nagios джаббер не умеет, я сделал так:
commands.cfg
Код: Выделить всё
# 'notify-service-by-jabber' command definition
define command{
command_name notify-service-by-jabber
command_line /usr/local/bin/notify_via_jabber $CONTACTPAGER$ "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$"
}
notify_via_jabber - это небольшой perl скрипт, непосредственно отправляющий оповещения
Код: Выделить всё
#!/usr/bin/perl -w
#
# Author David Cox
# Created from various code examples found on the web
# Last Modified 08/06/2002
# Feel free to use or modify as needed to suit your needs
#######################################################
# MAXWAIT is used because the send message function didn't seem to
# like being called to fast. The message would be sent unless I waited a second
# or so. You can experiment with it but I just went with 2 seconds.
#######################################################
use strict;
use Net::Jabber qw(Client);
use Net::Jabber qw(Message);
use Net::Jabber qw(Protocol);
use Net::Jabber qw(Presence);
my $len = scalar @ARGV;
if ($len ne 2) {
die "Usage...\n notify [jabberid] [message]\n";
}
my @field=split(/,/,$ARGV[0]);
use constant RECIPIENT => $ARGV[0];
use constant SERVER => 'jabber.someserver.ru';
use constant PORT => 5222;
use constant USER => 'user_for_nagios';
use constant PASSWORD => 'verysecretpassl';
use constant RESOURCE => 'resource';
use constant MESSAGE => $ARGV[1];
use constant MAXWAIT => 2;
my $connection = Net::Jabber::Client->new();
$connection->Connect( "hostname" => SERVER,"port" => PORT ) or die
"Cannot connect ($!)\n";
my @result = $connection->AuthSend( "username" => USER,"password" =>
PASSWORD,"resource" => RESOURCE );
if ($result[0] ne "ok") {
die "Ident/Auth with server failed: $result[0] - $result[1]\n";
}
foreach ( @field ) {
my $message = Net::Jabber::Message->new();
$message->SetMessage( "to" => $_,
"subject" => "Notification",
"type" => "chat",
"body" => MESSAGE);
$connection->Send($message);
sleep(MAXWAIT);
}
$connection->Disconnect();
exit;
EVOLVE OR DIE
Re: Nagios отправка Warning`ов по e-mail
xnu!l
Спасибо коллега Только вот ничего не понятно. Приведённые Вами конфиги, аналогичны моим, по крайне мере COMMANDS вкладка, но ничего не работает. Nagios говорит, что всё ОК сообщение отправлено, но получатель его не получает, полез смотреть в логи mail, там типа того: "Невозможно определить адрес и способ отправки".
Вопрос в другом, какой Вы почтовый клиент используете? Стандартный postfix что то у меня не работет, установил EXIM, я думаю настройки его мне ещё разбирать и разбирать...- и нужен ли вообще он, клиент?
Джаберы и Аськи не подходять- политика безопасности
Спасибо коллега Только вот ничего не понятно. Приведённые Вами конфиги, аналогичны моим, по крайне мере COMMANDS вкладка, но ничего не работает. Nagios говорит, что всё ОК сообщение отправлено, но получатель его не получает, полез смотреть в логи mail, там типа того: "Невозможно определить адрес и способ отправки".
Вопрос в другом, какой Вы почтовый клиент используете? Стандартный postfix что то у меня не работет, установил EXIM, я думаю настройки его мне ещё разбирать и разбирать...- и нужен ли вообще он, клиент?
Джаберы и Аськи не подходять- политика безопасности
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Re: Nagios отправка Warning`ов по e-mail
Вместе с nagios у меня работает обычный postfix в околодефолтной конфигурации. ( Кстати, он не почтовый клиент(как Thunderbird), он MTA=).
Вы можете mail настроить на использование внешнего SMTP сервера, к примеру.
Джаберы и Аськи не подходять- политика безопасности
Аналогично. Это одна из причин, по которой нужен внутрикорпоративный джаббер =)
EVOLVE OR DIE
Re: Nagios отправка Warning`ов по e-mail
Извините загавариваюсь уже, два дня пытаюсь заставить работать оповещение Пожалуйста по подробнее можно про настройку postfix, я его настраивал по инструкции через Yast, но что то результата нет, может есть какая хитрость? Как заставить сцепится Nagios и MTA?
По поводу внутрикорпаротивного джабера, да я не смогу объяснить нашему отмороженному безопаснику- зачем это и для чего
По поводу внутрикорпаротивного джабера, да я не смогу объяснить нашему отмороженному безопаснику- зачем это и для чего
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Re: Nagios отправка Warning`ов по e-mail
step_slim писал(а): ↑03.12.2009 12:49Извините загавариваюсь уже, два дня пытаюсь заставить работать оповещение Пожалуйста по подробнее можно про настройку postfix, я его настраивал по инструкции через Yast, но что то результата нет, может есть какая хитрость? Как заставить сцепится Nagios и MTA?
По поводу внутрикорпаротивного джабера, да я не смогу объяснить нашему отмороженному безопаснику- зачем это и для чего
В стандартном случае его и настраивать не надо=) Издалека кажется, что у вас на сервере что то с dns и он банально не может резолвнуть днс имя exchange сервера.
IMHO в вашей конфигурации проще натравить утилиту mail на использование SMTP самого exchange сервера, уж внутри себя то он думаю разрулит на какой аккаунт оповещение положить =)
Cмотрите man mail на предмет smtp, smtp-auth, smtp-auth-password.
EVOLVE OR DIE
Re: Nagios отправка Warning`ов по e-mail
Перепробовал уже кучу разных способов, добился того, что в логах Nagios нет ошибки, а вот сообщение всё же адресат не получает.... Не знаю уже куда копать Кстати, с dns всё нормально, я вообще грешу на сами настройки postfixa...
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Re: Nagios отправка Warning`ов по e-mail
В какой форме дан $CONTACTEMAIL$ - корректно ли он передаетcя mail'у ?
В журналах postfix'а отображается попытка отправки сообщения в какой либо форме?
EVOLVE OR DIE
Re: Nagios отправка Warning`ов по e-mail
xnu!l писал(а): ↑03.12.2009 12:10step_slim
Смотрим commands.cfg
Код: Выделить всё
# 'notify-host-by-email' command definition define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } # 'notify-service-by-email' command definition define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ }
Т.е. он банально пайпом в mail отправляет, тут все ясно по-моему.
Я бы порекомендовал отправлять оповещения не на email, а себе на джаббер для более быстрого реагирования на ситуацию.
По дефолту nagios джаббер не умеет, я сделал так:
commands.cfg
Код: Выделить всё
# 'notify-service-by-jabber' command definition define command{ command_name notify-service-by-jabber command_line /usr/local/bin/notify_via_jabber $CONTACTPAGER$ "***** Nagios ***** Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info: $SERVICEOUTPUT$" }
notify_via_jabber - это небольшой perl скрипт, непосредственно отправляющий оповещения
Код: Выделить всё
#!/usr/bin/perl -w # # Author David Cox # Created from various code examples found on the web # Last Modified 08/06/2002 # Feel free to use or modify as needed to suit your needs ####################################################### # MAXWAIT is used because the send message function didn't seem to # like being called to fast. The message would be sent unless I waited a second # or so. You can experiment with it but I just went with 2 seconds. ####################################################### use strict; use Net::Jabber qw(Client); use Net::Jabber qw(Message); use Net::Jabber qw(Protocol); use Net::Jabber qw(Presence); my $len = scalar @ARGV; if ($len ne 2) { die "Usage...\n notify [jabberid] [message]\n"; } my @field=split(/,/,$ARGV[0]); use constant RECIPIENT => $ARGV[0]; use constant SERVER => 'jabber.someserver.ru'; use constant PORT => 5222; use constant USER => 'user_for_nagios'; use constant PASSWORD => 'verysecretpassl'; use constant RESOURCE => 'resource'; use constant MESSAGE => $ARGV[1]; use constant MAXWAIT => 2; my $connection = Net::Jabber::Client->new(); $connection->Connect( "hostname" => SERVER,"port" => PORT ) or die "Cannot connect ($!)\n"; my @result = $connection->AuthSend( "username" => USER,"password" => PASSWORD,"resource" => RESOURCE ); if ($result[0] ne "ok") { die "Ident/Auth with server failed: $result[0] - $result[1]\n"; } foreach ( @field ) { my $message = Net::Jabber::Message->new(); $message->SetMessage( "to" => $_, "subject" => "Notification", "type" => "chat", "body" => MESSAGE); $connection->Send($message); sleep(MAXWAIT); } $connection->Disconnect(); exit;
В коде с джабером не все понятно, сервер, логин и пароль для входа в сам джабер тут все ясно, а вот куда он будет отправлять неясно! Если несложно, вы бы могли объяснить ?
Re: Nagios отправка Warning`ов по e-mail
Вроде первый параметр notify_via_jabber, $CONTACTPAGER$. Значение задаётся в настройках пользователей в нагиосе.
Re: Nagios отправка Warning`ов по e-mail
Ок, давай я поищу это за тебя:
http://nagios.sourceforge.net/docs/nagiosc...ns.html#contact
Обрати особое внимание на строчу начинающуюся со слова pager и на название переменной $CONTACTPAGER$
http://nagios.sourceforge.net/docs/nagiosc...ns.html#contact
Обрати особое внимание на строчу начинающуюся со слова pager и на название переменной $CONTACTPAGER$