Pull to refresh

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

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

Дано:
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) питание компьютера с модемом желательно запитать отдельным персональным бесперебойником — в случае отказа основного ИБП — компьютер с модемом будет защищен.

Всем мира и добра!
Tags:
Hubs:
+3
Comments 14
Comments Comments 14

Articles