Ads 468x60px

понедельник, 3 сентября 2012 г.

Nagios, уведомления sms через sms24x7

Задача: в нерабочие часы, уведомлять о критических ошибках по смс.
Используемые средства: смс шлюз sms24x7.
Скрипт для отправки sms.
На основе статьи Пример работы с API Яндекс.Директа и php библиотеки sms24×7 я подготовил небольшой модуль Sms24x7.pm :раскрыть
А сам скрипт(sms.pl) для отправки смс выглядит так:
#!/usr/bin/perl
# sms.pl
# use module
use Sms24x7;
use Getopt::Std;

my %options;
getopts("htp:n:m:",\%options);

if ($options{h}){
    print <<EOF;
Syntax: $0 [-h | -p 7xxxyyyzzzz -n senderName -t message]

    -h : This help message
    -p : recipient phone number in international format
    -n : sender name, no more than 11 symbols Latin (GSM_0338)
    -m : message text, ASCII or UTF-8
    -t : test mode, message don`t rated and doesn't go

EOF
    exit;
} elsif (!$options{p}){
        die "need option: -p 7xxxyyyzzzz phone number\n";
} elsif (!$options{n}){
        die "need option: -n sender name\n";
} elsif (!$options{m}){
        die "need option: -m message text\n";
} else {
    my $test = 0;
    $test = 1 if $options{t};

# * @param $email, $passwrod - login info
# CHANGE THIS!!!
    my $email = 'user@mail.ru';
    my $pass = 'secret';
# * @param $phone - recipient phone number in international format (like 7xxxyyyzzzz)
# * @param $text - message text, ASCII or UTF-8.
    print Sms24x7::smsapi_push_msg_nologin_v1({
         test => $test, # For test without send the message and doesn't change balance
         email => $email,
         password => $pass,
         sender_name => $options{n},
         phone => $options{p},
         text => $options{m}
    });
exit 0;
}
Далее файл Sms24x7.pm сохраняем в директории /usr/share/perl5, а файл sms.pl - в директорию /usr/local/bin/, и делаем его исполняемым:
$ sudo chmod +x /usr/local/bin/sms.pl
проверяем, что все работает:
$ sms.pl -p 79215550000 -n nagios -m 'test sms' -t
если все хорошо на выходе должны получить id сообщения, примерно следующее:
5817281
Настройка Nagios.
В файл /etc/nagios3/commands.cfg добавляем команду для отправки смс
# 'notify-host-by-sms24' command definition
define command{
        command_name    notify-host-by-sms24
        command_line    sms.pl -p $CONTACTPAGER$ -n Nagios -m "Host Alert: $HOSTNAME$ is $HOSTSTATE$"

}
# 'notify-service-by-sms24' command definition
define command{
        command_name    notify-service-by-sms24
        command_line    sms.pl -p $CONTACTPAGER$ -n Nagios -m "nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n"
}
Создаем новый контакт и добавляем его в группу контактов, файл /etc/nagios3/conf.d/contacts_nagios2.cfg:
define contact{
        contact_name                    svgsms
        alias                           svgsms
        service_notification_period     nonworkhours
        host_notification_period        nonworkhours
        service_notification_options    c
        host_notification_options       d,r
        service_notification_commands   notify-service-by-sms24
        host_notification_commands      notify-host-by-sms24
# CHANGE THIS!!!
        pager                           79215550000 
}

###############################################################################
# CONTACT GROUPS
###############################################################################
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 svgsms
        }
Перезапускаем nagios
$ sudo service nagios3 restart

Комментариев нет: