Закрыть
Profit for professionals
+7 495 648 69 49

Настройка предупреждений по jabber для nagios3

 

Здравствуйте, подчас настройка нотификаций в джаббер вызывает сложности, поэтому мы решили осветить этот вопрос.

Итак, первым делом научим нагиос отправлять сообщения. 

Скачиваем необходимые модули для перла.

perl -MCPAN -e shell

cpan> install Net::Jabber

Далее приводим листинг рабочего скрипта.

Всё что нужно сделать, это вписать работающий джаббер аккаунт.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl
 
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 => 'example.com';
use constant PORT => 5222;
use constant USER => 'jabberuser';
use constant PASSWORD => 'jabberpass';
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;

 Сохраняем  под именем notify_jabber и кладем в ваш каталог с плагинами нагиоса, для debian это /usr/local/bin/

 

Далее добавляем в commands.cfg:

define command{
command_name notify-host-by-jabber
command_line /usr/local/bin/notify_jabber $CONTACTPAGER$ "Host '$HOSTALIAS$' is $HOSTSTATE$ - Info: $HOSTOUTPUT$" 
}
# 'notify-by-jabber' command definition
define command{
command_name notify-service-by-jabber
command_line /usr/local/bin/notify_via_jabber $CONTACTPAGER$ "$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$" 
}

Добавляем pager в contacts_nagios2.cfg:

define contact{
contact_name root
alias Root
service_notification_period 24x7
host_notification_period 24x7

# не советуем оставлять все параметры, иначе при большом количестве серверов, вам нагиос будет сообщать о проблемах каждые несколько секунд, советую оставить только параметры, на критические проблемы.

service_notification_options w,u,c,r 

host_notification_options d,r
service_notification_commands notify-service-by-jabber
host_notification_commands notify-host-by-jabber
email test@example.com
pager Jabber@example.com
}

Подать заявку

Поля, отмеченные знаком * — обязательны.

например: +7 495 123 0000
например: ivanov@yandex.ru