Тривиальное смс-оповещение при недоступности сервера\оборудования

Со многими моими коллегами (системными администраторами, да наверное и не только) случалось так, что при отключении электропитания\аппаратном сбое\программное сбое — о недоступности того или иного сервиса\сервера узнавали от недовольного начальства\недовольных коллег.
Чтобы как-то решить проблему того, что я узнаю о проблеме в инфраструктуре от коллег, стало необходимым сделать смс-оповещение.
Наверняка есть какие-то уже готовые решения, может быть какие-то платные, аппаратные и т.п… В данной статье речь пойдёт о простом и банальном решении — и так я начну описание.

Дано:
1) Компьютер Windows на борту с портом RS-232 (COM-порт);
2) GSM-модем Siemens MC35i\(нынче называется Cinterion) с портом RS-232 с антенной и блоком питания;
3) Кабель RS-232;
4) SIM-карта на корпоративном тарифе (которая не будет отключена оператором за отсутствие платных операций в течение 90 дней), на общем балансе корп. лицевого счёта, чтобы деньги не кончились;
5) ПО nncron;
6) ПО NHSMS

Задача:
В случае недоступности сервера\устройства\Интернета по сети получасть смс-сообщение с указанием его названия.

Решение:
1) Сначала был подключен модем к компьютеру — настроен как обычный модем со скоростью порта 115200 бит\сек;
2) Далее было найдено и протестировано ПО, которое через командную строку (cmd\bat) отправляет смски — NHSMS (ссылка выше);
3) Затем необходимо было как-то обнаруживать события после которых нужно было задействовать, написанные cmd-файлы на отправку сообщений. Нам здесь помог nncron (ссылка выше) с его скриптами.

Cкрипт nncron можно настроить через его форму настройки:

image
image

По итогам настройки формируется файл nncron.tab. Находится он корневом каталоге приложения и выглядит так:

#( OMEGA-inet
Time: */5 * * * * *
Rule: HOST-EXIST: «8.8.8.8» NOT
Action:
StartIn: «C:\soft»
ShowNormal NormalPriority
START-APP: C:\soft\OMEGA-inet.cmd
)#

#( OMEGA-AV01
Time: */5 * * * * *
Rule: HOST-EXIST: «OMEGA-AV01» NOT
Action:
StartIn: «C:\soft»
ShowNormal NormalPriority
START-APP: C:\soft\OMEGA-AV01.cmd
)#

#( OMEGA-MX6
Time: */5 * * * * *
Rule: HOST-EXIST: «OMEGA-MX6» NOT
Action:
StartIn: «C:\soft»
ShowNormal NormalPriority
START-APP: C:\soft\OMEGA-MX6.cmd
)#

#( OMEGA-OFFICE
Time: */5 * * * * *
Rule: HOST-EXIST: «OFFICE» NOT
Action:
StartIn: «C:\soft»
ShowNormal NormalPriority
START-APP: C:\soft\OMEGA-office.cmd
)#

Смысл его прост — сервер пингуется по NS-имени каждые 5 минут (значение можно поменять, но если что-то отвалится,, если пинга нет, то срабатывает cmd-файл. Тоже самое относится
Сами cmd-файлы содержат сообщение для отправления смс (для каждого сервера свой cmd-файл, чтобы проще искать и редактировать):

nhsmscl.exe -COM:1 -smsc:79168999100 -phone:79639666666 -esc: Server OMEGA-MX6 is down.
echo off
echo %* >>in-sms.log

где «Server OMEGA-MX6 is down.» — это сообщение, которые приходит на телефон (по-русски у меня так и не получилось научить писать программу — возможно связано с кодировкой cmd-файла, да это и не важно).

Собственно как выглядит сам модем (вдруг кто не видел):

image

Ну и как результат:

image

Отмечу:
1) при отключении самого компьютера с модемом ничего не произойдет — на такой случай, как вариант, можно сделать второй компьютер с модемом, который будет опрашивать первый компьютер на доступность, но нужно ли это в условиях малого офиса;
2) nncron имеет также функцию опроса по порту — так что можно настроить к примеру опрос значимых TCP-портов и в случае обвала сервиса — будет также приходить смс;
3) питание компьютера с модемом желательно запитать отдельным персональным бесперебойником — в случае отказа основного ИБП — компьютер с модемом будет защищен.

Всем мира и добра!
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 14

    +2
    4) Сим-карта любого оператора;
    SIM-карта на корпоративном тарифе (которая не будет отключена оператором за отсутствие платных операций в течение 90 дней), на общем балансе корп. лицевого счёта, чтобы деньги не кончились
    5) ПО nncron;
    Чем вам встроенный в Windows планировщик не угодил?

      +1
      Благодарю за первое уточнение.
      По поводу встроенного Windows-планировщика — в принципе как вариант, но в таком случае пришлось бы написать ещё батник, который распознает пингуется сервер или нет и в случае, если не пингуется, то выполнять отправку сообщения. Надо будет попробовать соорудить такое — спасибо за наводку. В nncron же есть встроенный функционал «пинга», что меня сразу же и устроило.
        +1
        ping -n 1 192.168.1.1 | find "TTL=" >nul if errorlevel 1 ( echo host not reachable ) else ( echo host reachable )
      0
      Это называется нагородим костыли :)
      nagios или zabbix самое то для такого
        0
        Zabbix здесь — из пушки по воробьям. Да и занимает отдельный хост (или ВМ).
        0
        Раз: почему не Zabbix, например? Можно было бы ещё и графики строить. Полезно же!
        Два:
        1) при отключении самого компьютера с модемом ничего не произойдет — на такой случай, как вариант, можно сделать второй компьютер с модемом, который будет опрашивать первый компьютер на доступность, но нужно ли это в условиях малого офиса;

        i = 1; while (true) { print "при отключении самого компьютера с модемом ничего не произойдет — на такой случай, как вариант, можно сделать", i+1, " компьютер с модемом, который будет опрашивать", i, " компьютер на доступность"; i++; }
          –1
          nncron, надеюсь, был куплен(зарегистрирован)?
            0
            1) при отключении самого компьютера с модемом ничего не произойдет — на такой случай, как вариант, можно сделать второй компьютер с модемом, который будет опрашивать первый компьютер на доступность, но нужно ли это в условиях малого офиса;

            Здесь можно решить вопрос следующим образом.
            1. Поставить ежесуточное информирование о состоянии системы в определённое время.
            2. Оставить внеплановое уведомление о том, что какой-то сервер упал.
            Если СМСки перестали приходить — то сигнал о том, что система оповещения «отвалилась». Если внезапно отвалился сервер — внеплановое сообщение об этом.
            У меня по такому принципу стоит система мониторинга температуры системы отопления(актуально зимой) в загородном доме отца — это позволяет сберечь систему отопления от «вымерзания».
              0
              Как показывает практика если имеется некое некое периодическое оповещение определенного типа, на которое получателю необязательно реагировать каким-либо действием, то человек не отреагирует своевременно на его отсутствие, а также скорее всего не отреагирует на другое, экстренное оповещение подобного типа.
              Т.е. не стоит постоянно писать «всё ок», человеку надоест такие смски читать постоянно.
                0
                Я так понял у вас GSM модуль и его можно заставить делать дозвон. Тогда на аварию — можно сделать так: Отправлять СМС и сразу же запуска дозвон до вашего номера. Так — точно не пропустите ничего. Да если сервер упал -это требует обычно звонка и не просто СМС на которое можно просто забить, даже если система у вас будет настроена только на отправку. СМС. Смотрите сами. Вам с этим жить. Я предлагаю варианты улучшения, я не критикую систему.
                  0
                  Лично у меня все вообще совсем по-другому.
                  Я лишь обратил внимание на ваши слова:
                  >>1. Поставить ежесуточное информирование о состоянии системы в определённое время.
                  >>2. Оставить внеплановое уведомление о том, что какой-то сервер упал.
              +1
              там же АТ команды — зачем лишний софт. Да и ИМХО = дешевле и надежнее контроллер вкорячить между модемом и компом. Средство мониторинга и уведомления должно быть как минимум автономным, т.е. работать самостоятельно, а не зависеть от компа… да и накладно это держать два таких мопеда… в идеале — отсутствие связи с компом, кроме проверки доступности… чем больше «слоев» между физическими уровнями — тем больше точек отказа: заглючило ОС, заглючил СОФТ общения с мопедом, заглючил ПЛАНИРОВЩИК.
              Насчет Вашего решения: в случае бродкаст шторма, флуда (свитч глюкануло, например) я получу стопицот СМС? НОЧЬЮ?
                0
                ИМХО проще взять что-нить из разряда Mikrotik RB750UP и вокнуть в него USB свисток, а дальше пишите скрипты какие только душе угодно, гораздо экономичнее в плане электричества, не надо запариваться за лицензии на софт / винду ну и плюсом открывается куча новых возможностей.

                Примеров скриптов по опросу всего чего только можно, в интернете просто куча, времени на изучение скриптов для тика нужно ровно 30 мин.
                  0
                  Присмотрелся к этому девайсу. Как будет необходимость покупки роутера — приобрету именно его — для экспериментов. Вдобавок на хабре куча статей по его настройке. Спасибо.

                Only users with full accounts can post comments. Log in, please.