Отправка уведомлений через sms в Nagios 3

Nagios3 send smsВ продолжение предыдущей статьи Nagios 3 – установка, настройка и эксплуатация хочется дополнить о настройке уведомлений событий используя sms оповещения.
Мобильный телефон или GSM модем должен быть подключен к компьютеру, где установлен Nagios. Для этого дела идеально подходят недорогие телефоны со шнурком USB присоединением к компьютеру, через USB происходит постоянная зарядка телефона.

Настройка gsmlib

Из приложений нам потребуется установить пакет gsmlib. Пакет можно скачать с сайта или установить из репозитория. Теперь можно подключить телефон и настроить его на работу с программой gsmlib.
Если вы не знаете как подключать телефон к компьютеру то обратитесь к статье О Gammu, Wammu, sms шлюзе и управление компьютером через смс. Часть 1., где описаны базовые принципы подключения на примере программы gammu.

На самом деле можно использовать любой пакет gsm, который умеет рассылать смс. Я рекомендую рассылать смс от Nagios с помощью демона смс, это правильнее чем для каждого смс сообщения выполнять команду “послать смс”.

Для проверки отсылки смс наберите команду от root или sudo (имя порта телефона и номер телефона подставьте свои)


#gsmsendsms -d /dev/ttyUSB0 +79211234567 Text

Такой способ рассылки смс не очень предпочтителен для Nagios, т.к. если произойдет много событий, то есть вероятность что команда рассылки зависнет при их обработки из очереди (у меня такое случалось).
Я рекомендую следующий способ: в составе пакета gsmlib есть демон gsmsmsd, который умеет следить за определенным каталогом – пулом смс. Как только в этом каталоге появится текстовый файл с любым именем, содержащий в теле


+xxxxxxxxxx
Text sms

где, +xxxxxxxxxx номер телефона, то будет отправлен текст смс на этот номер, а само сообщение удалено из пула. Проверка показала, что даже с большим количесвом смс в пуле демон справляется ну ура и шлет смс как из пулемета 🙂 Еще один плюс такого способа – это возможность использовать одновременно с Nagios и другие программы для отправки смс, достаточно только сгенерировать правильное текстовое сообщение и положить его в пул.
Создаем пул каталог – /var/spool/sms и запускаем демон от root или sudo используя свой порт телефона.


#gsmsmsd -d /dev/ttyUSB0 -b 9600 -s /var/spool/sms &

В завершение настройки напишем маленький скриптик, который будет вызывать Nagios3 для создания смс с уникальными названиями файлов и формированием правильного содержания смс


#!/bin/sh

unique=$$-`date "+%S"`
echo $1 > /var/spool/sms/$unique  #первая строка номер телефона
echo $2|head -c 158 >> /var/spool/sms/$unique #вторая строка 158 символов сообщения

Скриптик я назвал sms_spool, а протестировать его работу можно командой от root или sudo


#sms_spool +792112345678 'Text sms'

После этой команды должен отработать демон gsmsmsd, отослать смс и очистить очередь пула.

Настройка Nagios 3

Прописываем команды отсылки смс для хоста и сервиса в файле commands.cfg. Путь до скрипта sms_spool пишите свой.
Команды разделенные “\” пишутся в одну строку!


define command{
        command_name    notify-by-sms
        command_line    /usr/local/bin/sms_spool $CONTACTPAGER$ '$NOTIFICATIONTYPE$: \
$HOSTNAME$($HOSTADDRESS$): $SERVICEDESC$ is $SERVICESTATE$ ($HOSTOUTPUT$) Time: $SHORTDATETIME$'
        }

define command{
        command_name    host-notify-by-sms
        command_line    /usr/local/bin/sms_spool $CONTACTPAGER$ '$NOTIFICATIONTYPE$: \
$HOSTNAME$($HOSTADDRESS$) is $HOSTSTATE$ ($HOSTOUTPUT$) Time: $SHORTDATETIME$'
        }

Правим файл contacts.cfg, добавляем в контакты строки. У меня показан пример если требуется отсылать уведомления и через электронную почту и через sms.
В переменную pager записываем номер телефона.


service_notification_commands   notify-service-by-email,notify-by-sms
host_notification_commands      notify-host-by-email,host-notify-by-sms
pager                          +79211234567

Перезапускаем Nagios и для проверки что-нибудь выключаем 🙂 Не забываем включить запуск демона пула смс в автозагрузку компьютера. Удачи!

Запись опубликована в рубрике Monitoring, Nagios с метками , , . Добавьте в закладки постоянную ссылку.

6 комментариев Отправка уведомлений через sms в Nagios 3

  1. Серегей говорит:

    Статья отличная, сделал как написано, всё получилось. Но так как во FreeBsd познаю только азы, включить запуск демона пула смс в автозагрузку компьютера я не смог. Что для этого необходимо?

    • mik говорит:

      во FreeBSD скрипты могут запускаться из папки /usr/local/etc/rc.d/
      Положите туда файл запуска скрипта примерно такого содержания (обязательно дать права скрипту на выполнение). Конечно впишите запуск и остановку того что надо.

      #!/bin/sh -

      case "$1" in

      start)
      /usr/local/sbin/prog -d && echo -n " prog"
      ;;
      stop)
      kill `cat /var/run/prog.pid` && echo -n " prog"
      ;;
      *)
      echo "unknown option: $1 - should be "start" or "stop"" >&2
      ;;
      esac

      плюс почитайте статью http://samag.ru/archive/article/149

      • Серегей говорит:

        Хорошо, спасибо большое за подсказку. Допустим я сделал скрипт такого содержания
        #!/bin/sh
        case “$1” in
        start)
        gsmsmsd -d /dev/cuaU0.1 -b 9600 -s /var/spool/sms $
        ;;
        stop)
        kill gsmsmsd.pid’
        ;;
        *)
        echo “unknown option: $1 – should be “start” or “stop”” >&2
        ;;
        esac
        , но у меня все не стартует автоматически. Проблема в моем скрипте или где-то еще?(расположение /usr/local/etc/rc.d/, сделал исполняемым как http://docs.freebsd.org/doc/4.10-RELEASE/usr/share/doc/ru/books/handbook/configtuning-starting-services.html)

        • mik говорит:

          А если после старта системы перейти в каталог /usr/local/etc/rc.d и сделать
          ./название скрипта start стартует?

          ну и вообще в стартовых скриптах принято писать полный путь до команд запуска типа /usr/local/bin/gsmsmsd, а не как у вас

  2. Серегей говорит:

    Стартовый скрипт пришел к такому виду:
    #!/bin/sh
    echo -n ‘ sms_pool.sh’
    case “$1” in
    start)
    gsmsmsd -d /dev/cuaU0.1 -b 9600 -s /var/spool/sms &
    ;;
    stop)
    kill -9 `cat /var/run/gsmsmsd.pid`
    ;;
    *)
    echo “Usage: `basename $0` {start|stop}” >&2
    exit 64
    ;;
    esac
    exit 0

    скрипт стал запускаться вручную, запускать демон но через секунд 20 служба отключатся и в консоли появляется ошибка: gsmsmsd[ERROR]: ME/TA error ‘unknown error’ (code 500).
    Чуть позже попробую последовать вашему совету, пропишу полный путь.

    • mik говорит:

      В общем надо понять почему потом происходит сбой. Может в логах системы что-то есть. Когда скрипт будет работать после ручного запуска, то прописать полный путь до команды и посмотреть при старте системы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *