SMS шлюз для Monit

Данная статья является логическим продолжением статьи «Пример мониторинга серверной комнаты на основе Monit, InfluxDB, Grafana и устройств NetPing». В рамках данной статьи будет рассмотрена возможность настройки SMS-оповещения от системы мониторинга Monit при помощи шлюза NetPing SMS (SMS шлюз для Monit).

 Для отправки SMS можно использовать следующие устройства компании NetPing:

Наличие SMS-уведомлений позволит IT персоналу оперативнее реагировать на события в сети и минимизировать простои бизнеса из-за сбоев в работе IT оборудования. Также предприятие сможет значительно сэкономить на услугах сторонних сервисов SMS-рассылки, потому что в таком случае стоимость SMS будет соответствовать тарифу сотового оператора без дополнительных комиссий.

Требования к оборудованию

  • Одно из перечисленных выше устройств NetPing с установленной SIM картой – 1 шт;
  • ПК/сервер с OC Ubuntu и установленной на нём системой мониторинга Monit – 1 шт;
  • Локальная сеть – 1 шт.

В нашем примере мы используем Monit v 5.25.2, установленный на Ubuntu Server 16.04.3 LTS. Для получения информации по настройке системы мониторинга Monit можно обратиться к официальной документации, также развертывание и настройка достаточно подробно описаны в этой статье нашего блога.

Настройка устройств NetPing

Устройство NetPing SMS - аппаратный GSM шлюз

Для отправки SMS-уведомлений в нашем случае необходимо выполнить всего лишь часть базовой настройки (настроить сетевые параметры для доступа по сети) устройств NetPing SMSUniPing server solution v4/SMSUniPing server solution v3/SMSNetPing 8/PWR-220 v3/SMS и установить рабочую SIM карту с положительным балансом в разъём встроенного GSM модема. Прочитать про базовую и дополнительную настройку устройств можно в следующей документации:

Реализация отправки SMS-оповещений от системы мониторинга Monit

Monit. Главное окно web-интерфейса системы

Считаем, что шлюз для отправки и приёма SMS-сообщений NetPing SMS доступен в локальной сети со следующими параметрами:

  • IP адрес – 192.168.1.200;
  • Логин – visor;
  • Пароль – ping

Директории для хранения пользовательских файлов и скриптов в системе мониторинга Monit:

  • /home/user/monit/conf/user/
  • /home/user/monit/conf/script/

Для реализации функции отправки SMS напишем скрипт на скриптовом языке программирования BASH. Скрипт использует возможность отправки SMS-сообщений при помощи URL-encoded команд. Подробнее о вариантах отправки SMS можно прочесть в документации.

#!/bin/bash
curl --user visor:ping --data "[$1] $2" http://192.168.1.200/sendsms.cgi?utf8

Параметры, которые необходимо изменить при использовании скрипта в вашей системе мониторинга Monit:

  • visor – имя пользователя для авторизации на устройстве NetPing;
  • ping – пароль для авторизации на устройстве NetPing;
  • 192.168.1.200 – текущий IP адрес устройства NetPing

Подготовленный файл скрипта: sendsms.sh

Разместим файл скрипта в директории скриптов (в нашем примере /home/user/monit/conf/script) и сделаем файл исполняемым с помощью команды:

chmod +x /home/user/monit/conf/script/sendsms.sh

Для работы скрипта нужно установить утилиту CURL (если не установлена ранее) командой:

sudo apt-get install curl

Далее открываем для редактирования файл с настройками мониторинга в системе Monit. (В нашем примере /home/user/monit/conf/user/netping) и указываем для каждого объекта мониторинга, о состоянии которого мы планируем получать SMS-уведомление, действие «Выполнить скрипт»:

exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Потеряна связь с устройством NetPing_8_PWR-220_v3SMS"

В параметры скрипта передаём первым аргументом номер телефона получателя уведомления (можно указать разных получателей для разных типов событий), вторым аргументом текст SMS-сообщения (поддерживается кириллица, кавычки обязательны). Примерный код файла с настройками мониторинга ниже:

check host NetPing_SMS with address 192.168.1.200
  if failed ping then alert

check host NetPing_8_PWR-220_v3SMS with address 192.168.1.210
  if failed ping then
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Потеряна связь с устройством NetPing_8_PWR-220_v3SMS"

check program Temperature_1 with path "/root/monit/conf/scripts/get_temp1w.sh 1"
  if status == 1 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Данные с датчика температуры №1 не получены. Сбой SNMP"
  if status == 2 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Датчик температуры №1 не подключен или неисправен"
  if status == 3 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Температура на датчике №1 ниже нормы"
  if status == 4 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Температура на датчике №1 выше нормы"
  if status == 9 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Неопознанная ошибка. Проверьте датчик температуры №1 вручную"

check program Humudity_1 with path "/root/monit/conf/scripts/get_relhumtemp1w.sh 1"
  if status == 1 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Данные с датчика влажности №1 не получены. Сбой SNMP"
  if status == 2 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Датчик влажности №1 не подключен или неисправен"
  if status == 3 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Влажность на датчике №1 ниже нормы"
  if status == 4 then 
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Влажность на датчике №1 выше нормы"
  if status == 9 then
  exec /home/user/monit/conf/script/sendsms.sh +70000000000 "Неопознанная ошибка. Проверьте датчик влажности №1 вручную"

Подготовленный файл настроек мониторинга в системе Monit можно скачать здесь.

В результате выше приведенных настроек система мониторинга Monit будет отправлять подобные SMS-сообщения:

Пример SMS-уведомлений от системы мониторинга Monit и шлюза NetPing SMS

Таким образом мы реализовали отправку произвольных SMS-сообщений из системы мониторинга Monit с помощью аппаратного GSM шлюза для отправки и приёма SMS-сообщений NetPing SMS