Данная статья является логическим продолжением статьи «Пример мониторинга серверной комнаты на основе Monit, InfluxDB, Grafana и устройств NetPing». В рамках данной статьи будет рассмотрена возможность настройки SMS-оповещения от системы мониторинга Monit при помощи шлюза NetPing SMS (SMS шлюз для Monit).
Для отправки SMS можно использовать следующие устройства компании NetPing:
- шлюз для отправки и приёма SMS-сообщений NetPing SMS;
- устройство мониторинга микроклимата серверных комнат UniPing server solution v4/SMS или UniPing server solution v3/SMS;
- устройство удалённого управления электропитанием (IP power distribution unit) для серверного оборудования NetPing 8/PWR-220 v3/SMS
Наличие 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
Для отправки SMS-уведомлений в нашем случае необходимо выполнить всего лишь часть базовой настройки (настроить сетевые параметры для доступа по сети) устройств NetPing SMS, UniPing server solution v4/SMS, UniPing server solution v3/SMS, NetPing 8/PWR-220 v3/SMS и установить рабочую SIM карту с положительным балансом в разъём встроенного GSM модема. Прочитать про базовую и дополнительную настройку устройств можно в следующей документации:
- NetPing SMS – описание встроенного ПО;
- UniPing server solution v4/SMS и UniPing server solution v3/SMS – описание встроенного ПО;
- NetPing 8/PWR-220 v3/SMS – описание встроенного ПО.
Реализация отправки SMS-оповещений от системы мониторинга Monit
Считаем, что шлюз для отправки и приёма 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 с помощью аппаратного GSM шлюза для отправки и приёма SMS-сообщений NetPing SMS.