суббота, 6 октября 2012 г.

Отправка SMS-уведомлений Nagios'a через 3g-модем

До недавнего времени для отправки уведомлений от системы мониторинга Nagios пользовался  SMS-шлюзами в интернете, например sms16.ru. Меня всё устраивало, за исключением того что при отсутствии интернета я бы об этом не узнал, по крайней мере от Nagios'a. Решение видится только одно: слать SMS через мобильного оператора.
В интернете довольно много информации по этому вопросу, самым простым мне показалось отправка программой gnokii через 3g-модем.
Нашёл старый Huawei e160g с надписью Билайн, вставил SIM карту мегафона и воткнул в комп.
lsusb выдал Bus 001 Device 010: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem


Если верить этой статье ИЛИ если "Modem" нет, то нужны дополнительные манипуляции которые в этой статье и описаны.

Ставим gnokii:
sudo apt-get install gnokii

Лепим конфиг:
sudo mkdir /etc/gnokii
sudo nano /etc/gnokii/e160g

Вставляем:


[global]
        model = AT
        connection = serial
        port = /dev/ttyUSB0

Этих настроек для работы модема оказалось достаточно.
Проверка:

sudo gnokii --config /etc/gnokii/e160g --identify

Результат должен быть примерно таким:

GNOKII Version 0.6.31
IMEI         : 354300028632681
Manufacturer : huawei
No flags section in the config file.
Model        : E160G
Product name : E160G
Revision     : 11.604.21.01.161

Отправка  SMS-сообщения на номер +79225111711:

echo "hello world" |sudo /usr/bin/gnokii --config /etc/gnokii/e160g --sendsms '+79225111711'

Сообщение успешно пришло на телефон, дело практически сделано, осталось написать небольшой скрипт и вставить в Nagios.
Мой скрипт будет получать два аргумента от Nagios, первый - имя хоста и его состояние, второй - номер получателя.

sudo nano /usr/bin/gpsend

Вставляем:

#!/bin/sh
CONFIG="/etc/gnokii/e160g"
PIN=6523
echo "$PIN" | /usr/bin/gnokii --entersecuritycode PIN
echo "$1" | /usr/bin/sudo /usr/bin/gnokii --config="${CONFIG}" --sendsms "$2" >>/dev/null 

Даём права на исполнение:

sudo chmod +x /usr/bin/gpsend

Для того, что бы скрипту не нужен был пароль, нужно кое что сделать:

sudo visudo

В конец файла добавим:

ALL ALL=(ALL) NOPASSWD:/usr/bin/gnokii

Этот скрипт может нам пригодится и для других целей, попробуем что нибудь отправить:

gpsend hello +79222222222

Приступим к Nagios
Откроем файл /etc/nagios3/command.cfg
И добавим туда:

define command{
        command_name    sms
        command_line    /usr/bin/gpsend $HOSTNAME$-$HOSTSTATE$ $CONTACTPAGER$
        }

Впишем телефон в контакты, например:

define contact{

              contact_name                         svm

              alias                                SvM
              service_notification_period          24x7
              host_notification_period             24x7
              service_notification_options         w,u,c,r
              host_notification_options            d,u,r
              service_notification_commands        sms
              host_notification_commands           sms
              email                                asdasd@gmail.com
              pager                                +79225111711

         }

В принципе можно было использовать что то отличное от page, список доступных параметров нагиоса можно посмотреть здесь.

Осталось перезапустить Nagios.

sudo service nagios3 reload





Все параметры gnokii можно посмотреть там: http://www.framasoft.net/IMG/aide.txt




1 комментарий :