Настройка предупреждений по 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
}