DevOps, Linux, 2 git`a
  • Обо мне
  • Категории
  • Теги
  • Архив

Звонок с того сервера

Назрела проблема, что на оповещение об особо крупных и значимых авариях нужна незамедлительная реакция. Стандартный способ оповещения в виде СМС или Email`ов не давал нужного результата, особенно ночью, когда крепко спишь и легко пропустить "блинкающий" звук нотификаций. Единственное чтоб точно могло меня разбудить, это телефонный звонок и при необходимости не один повторный.

Для этого можно использовать софтсвитч на базе asterisk и sip аккаунт ip-телефонии. Тут фантазия может развернутся вплоть до генерации голосового сообщения о проблеме, ну или проигрывание зарание заготовленных шаблонов. Но это длинный и интересный путь, а надо чтоб было просто и сразу. По этому хватит и обычного звонка на телефон.

Т.е. нужен sip аккаунт, консольный sip клиент и мониторинг, который сможет, используя клиента, звонить при проблеме. На сервере мониторинга уже установлен и настроен icinga (это форк nagios). Гугл в качестве подходящего консольного sip клиента подсказал pjsip, это комплекс утилит для работы с ip телефонией. Ставить лучше из исходных кодов. После установки нам понадобится pjsua. Но перед этим нам необходим провайдер ip телефонии, через которого мы будем звонить, желательно дешево или вообще бесплатно. Я для этих целей решил использовать sipnet.ru. При регистрации необходимо подтвердить свой номер телефона, и если все получится, то лучше сделать минимальный платеж на 3 у.е. При правильном использовании, не брать трубку, когда вам позвонит мониторинг, баланc будет вечным. После регистрации у вас будет SIP_ID (не путайте с логином в личном кабинете) и пароль. Звонок осуществляется следующим способом:

    /usr/bin/pjsua --config-file=/etc/pjsuarc sip:+7ХХХХХХХХХХ@sipnet.ru

где
pjsuarc - конфиг фаил следующего содержания:

    --duration=1
    --null-audio
    --id sip:SIP_ID@sipnet.ru
    --registrar sip:sipnet.ru
    --realm etc.tario.ru
    --username SIP_ID
    --password ВАШ_ПАРОЛЬ

+7ХХХХХХХХХХ - тот номер телефона, который вы подтверждали при регистрации в сипнет.ру

После исполнения комманды на ваш телефон позвонит номер, в моем случае всегда звонит +7(499)9210227, его я и записал в контакты как ~~Пиздец~~ Мониторинг. Не забывайте дать права на чтение конфига /etc/pjsuarc пользователю от которого работает мониторинг.

Далее необходимо произвести настройки самого мониторинга, в моем случае необходимо добавить новый контакт в /etc/icinga/objects/contacts.cfg

    define contact{
    contact_name                    user_sip
    alias                           user_sip
    use                             generic-contact
    host_notification_period        24x7
    host_notification_options       d
    host_notification_commands      notify-host-by-sip
    email                           +7ХХХХХХХХХХ@sipnet.ru
    }

Я выставил в настройках оповещать только о недоступности кого-либо сервера т.е. при полном его падении. Далее необходимо добавить комманду на оповещение в /etc/icinga/conf.d/commands.cfg

    # 'notify-host-by-sip' command definition
    define command{
    command_name    notify-host-by-sip
    command_line   ( sleep 120 && echo q ) | /usr/bin/pjsua --config-file=/etc/pjsuarc sip:$CONTACTEMAIL$ >/dev/null 2>&1
    }

Тут пытаться дозвониться до вас будут в течении 120 секунд.

И в конце нужно добавить в группу admins в моем случае созданный контакт user_sip, это делается в том же файле /etc/icinga/objects/contacts.cfg

    define contactgroup{
    contactgroup_name       admins
    alias                   Icinga Administrators
    members                 icingaadmin,user_sip
    }

Перезапускаем демона мониторинга:

    sudo service icinga reload

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

Комментарии
comments powered by Disqus

Опубликовано

сен 9, 2013

Категория

devops

Теги

  • icinga 1
  • ip 2
  • linux 2
  • nagios 1
  • sip 1

Контакты

Получать обновления

  • Creative Commons License DevOps, linux, 2 git`a. Дмитрий Леонов
  • Создано с помощью Pelican. Тема Elegant от Talha Mansoor. Перевод темы Дмитрий Леонов