Доброго времени суток коллеги!
Столкнулся с такой проблемой, на сервере установил и настроил Nagios, разобрался с конфигурационными файлами, но вот не в какую не хочет отчёты слать об ошибках на почту. Почта через Exchange server работает. Те маны, что нашёл в сети результата не дают. Если кто сталкивался, подскажите
з.ы. Нужно ли на настраивать непосредственно почтовую программу на сервере для этого?
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Т.е. он банально пайпом в mail отправляет, тут все ясно по-моему.
Я бы порекомендовал отправлять оповещения не на email, а себе на джаббер для более быстрого реагирования на ситуацию.
По дефолту nagios джаббер не умеет, я сделал так:
commands.cfg
#!/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;
Спасибо коллега Только вот ничего не понятно. Приведённые Вами конфиги, аналогичны моим, по крайне мере COMMANDS вкладка, но ничего не работает. Nagios говорит, что всё ОК сообщение отправлено, но получатель его не получает, полез смотреть в логи mail, там типа того: "Невозможно определить адрес и способ отправки".
Вопрос в другом, какой Вы почтовый клиент используете? Стандартный postfix что то у меня не работет, установил EXIM, я думаю настройки его мне ещё разбирать и разбирать...- и нужен ли вообще он, клиент?
Джаберы и Аськи не подходять- политика безопасности
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Вопрос в другом, какой Вы почтовый клиент используете?
Вместе с nagios у меня работает обычный postfix в околодефолтной конфигурации. ( Кстати, он не почтовый клиент(как Thunderbird), он MTA=).
Вы можете mail настроить на использование внешнего SMTP сервера, к примеру.
Джаберы и Аськи не подходять- политика безопасности
Аналогично. Это одна из причин, по которой нужен внутрикорпоративный джаббер =)
Извините загавариваюсь уже, два дня пытаюсь заставить работать оповещение Пожалуйста по подробнее можно про настройку postfix, я его настраивал по инструкции через Yast, но что то результата нет, может есть какая хитрость? Как заставить сцепится Nagios и MTA?
По поводу внутрикорпаротивного джабера, да я не смогу объяснить нашему отмороженному безопаснику- зачем это и для чего
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Извините загавариваюсь уже, два дня пытаюсь заставить работать оповещение Пожалуйста по подробнее можно про настройку postfix, я его настраивал по инструкции через Yast, но что то результата нет, может есть какая хитрость? Как заставить сцепится Nagios и MTA?
По поводу внутрикорпаротивного джабера, да я не смогу объяснить нашему отмороженному безопаснику- зачем это и для чего
В стандартном случае его и настраивать не надо=) Издалека кажется, что у вас на сервере что то с dns и он банально не может резолвнуть днс имя exchange сервера.
IMHO в вашей конфигурации проще натравить утилиту mail на использование SMTP самого exchange сервера, уж внутри себя то он думаю разрулит на какой аккаунт оповещение положить =)
Cмотрите man mail на предмет smtp, smtp-auth, smtp-auth-password.
Перепробовал уже кучу разных способов, добился того, что в логах Nagios нет ошибки, а вот сообщение всё же адресат не получает.... Не знаю уже куда копать Кстати, с dns всё нормально, я вообще грешу на сами настройки postfixa...
А голова что бы думать, ноги что бы ходить- никто не сможет меня остановить;
Перепробовал уже кучу разных способов, добился того, что в логах Nagios нет ошибки, а вот сообщение всё же адресат не получает.... Не знаю уже куда копать Кстати, с dns всё нормально, я вообще грешу на сами настройки postfixa...
В какой форме дан $CONTACTEMAIL$ - корректно ли он передаетcя mail'у ?
В журналах postfix'а отображается попытка отправки сообщения в какой либо форме?
Т.е. он банально пайпом в mail отправляет, тут все ясно по-моему.
Я бы порекомендовал отправлять оповещения не на email, а себе на джаббер для более быстрого реагирования на ситуацию.
По дефолту nagios джаббер не умеет, я сделал так:
commands.cfg
#!/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;
В коде с джабером не все понятно, сервер, логин и пароль для входа в сам джабер тут все ясно, а вот куда он будет отправлять неясно! Если несложно, вы бы могли объяснить ?