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

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

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

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

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

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

#(OMEGA-inetTime: */5 * * * * *Rule: HOST-EXIST:»8.8.8.8» NOTAction: StartIn: «C:\soft«ShowNormal NormalPrioritySTART-APP: C:\soft\OMEGA-inet.cmd)#

#(OMEGA-AV01Time: */5 * * * * *Rule: HOST-EXIST: «OMEGA-AV01» NOTAction: StartIn: «C:\soft«ShowNormal NormalPrioritySTART-APP: C:\soft\OMEGA-AV01.cmd)#

#(OMEGA-MX6Time: */5 * * * * *Rule: HOST-EXIST: «OMEGA-MX6» NOTAction: StartIn: «C:\soft«ShowNormal NormalPrioritySTART-APP: C:\soft\OMEGA-MX6.cmd)#

#(OMEGA-OFFICETime: */5 * * * * *Rule: HOST-EXIST: «OFFICE» NOTAction: StartIn: «C:\soft«ShowNormal NormalPrioritySTART-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 offecho %* >>in-sms.log

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

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

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

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

Всем мира и добра!

© Habrahabr.ru