Pull to refresh

Бесплатная отправка SMS уведомлений в Zabbix

Reading time6 min
Views84K
Все осознают необходимость непрерывного контроля большой распределенной сети и для этого есть множество систем мониторинга. Сразу замечу, что я работаю у крупного провайдера и на мои, так сказать, плечи ложится контроль состояния большого количества узлов доступа, которые зачастую находятся на очень большом удалении от меня.

Сейчас я активно использую ветку Zabbix 2.0: Удалось прикрутить постоянный контроль параметров абонентских линий ADSL на всех узлах доступа, порядка 200 000 параметров. Описания как это было сделано хватит на отдельную статью. Я же расскажу как сделать простым и доступным способом оповещение о каких либо событиях посредством SMS, и не использовать для этого специфического железа.

Я же расскажу как сделать простым и доступным способом оповещение о каких либо событиях посредством SMS, и не использовать для этого специфического железа.

Вариант оповещения используя бесплатные возможности email2sms сервиса sms.ru


UPD: В связи со сменой корпоративного оператора связи способ email2sms от билайна для меня больше не приемлем. Нашел достаточно интересное предложение в виде веб сервиса sms.ru Что меня в нем привлекло? Во первых при регистрации в качестве программиста получаем следующие плюшки:

  • Продвинутый API — вы можете отправлять сообщения, проверять их состояние, узнавать стоимость, проверять баланс через простые HTTP запросы.
  • Возможность замены отправителя — в качестве отправителя может использоваться латинское название вашего сайта или компании
  • Сообщения на собственный номер
  • Бесплатны до 60 СМС в день, далее оплачиваются по стандартным тарифам
  • СМС на свой номер бесплатны только если текст укладывается в 1 SMS сообщение
  • e-mail2sms


Регистрация простая, на телефон придет подтверждение в виде СМС. Я регистрировался в качестве программиста.
Собственно чтобы не выходить за пределы бесплатных СМС достаточно соблюдать следующие условия

  1. Не более 10 СМС на номера отличные от своего, используемого при регистрации. Лимит, стоимость, статус сообщения можно проверить простыми запросами.
  2. Не более 160 символов латиницей в СМС.
  3. Не более 60 СМС на свой номер


По умолчанию в качестве отправителя будет ваш номер, указанный при регистрации, это показалось мне не красивым и я отправил заявку на имя отправителя zabbix из панели управления, заявку рассматривали не долго, может час может 2 и я стал получать уже сообщения от отправителя zabbix.

Настройка email2sms


Выбираем пункт меню Приложения — Почта @ sms.ru. Откроется что-то подобное этому:


Нажимаем редактировать и увидим следующую картинку:


Пройдусь по пунктам
  1. Первым идет ваш адрес вида ххх @ sms.ru на который и нужно отправлять письма уведомлений
  2. Галочку снимаем
  3. Галочку снимаем (мне название действия не нужно)
  4. Галочку ставим
  5. Галочку ставим иначе смс станут платными
  6. Выбираем от какого отправителя будут приходить сообщение (у меня уже есть имя zabbix)
  7. Галочку ставим
  8. Дальше можем вписать дополнительные номера телефонов куда будут дублироваться СМС. т.е. отправив письмо на один ящик смс могут получить сразу несколько клиентов с разными телефонами.
  9. Вводим адреса ящиков, с которых будут идти письма на ящик email2sms. Если поле оставить пустым то письма будут платными.


Нажмем сохранить и должно получиться так


Настройка на сервисе sms.ru закончена.

Есть два способа отправки сообщений
  • Используя smtp сервер сервиса
  • Используя свой почтовый сервер


Настроим zabbix используя smtp сервер сервиса


Создадим способ оповещения для первого способа. Администрирования — Способы оповещения.

В качестве исходящего email указываем свой emai2sms который выдал sms.ru

Теперь необходимо назначить пользователю способ оповещения. Администрирование — Пользователи Выбираем пользователя и выбираем вкладку оповещения Далее добавить




При необходимости настраиваем уровни и время для оповещения.

Настроим zabbix используя свой почтовый сервер


Для второго способа, с использованием своего почтового сервера, требующего авторизацию сделаем другой способ оповещения типа «скрипт»


Скрипт находится в AlertScriptsPath (указн в конфигурационных файлах zabbix). В моем случае это /usr/local/share/zabbix/alertscripts/
Сам скрипт

#!/bin/bash
export smtpemailfrom=ss@cbx.ru
export zabbixemailto=$1
export zabbixsubject=$2
export zabbixbody=$3
export smtpserver=хххх.хххx.ru
export smtplogin=ххххх@ххххх.ru
export smtppass=password
/usr/bin/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m "$zabbixbody" -s $smtpserver:25 -xu $smtplogin -xp $smtppass -o message-format=raw


Не забываем дать права 755 на файл zabbix_sendemai.

Теперь необходимо назначить пользователю способ оповещения. Администрирование — Пользователи Выбираем пользователя и выбираем вкладку оповещения Далее добавить


Создадим действие zabbix отправляющее оповещение посредством sms


Настроим действие на сработавший триггер. Для примера взял триггер падение порта fa 0/5 коммутатора d-link. Заходим в Настройка — Действия — Создать действие (источник события — триггер)

На вкладке действие настраиваем так


На вкладке условие задаем в качестве условия триггер со значением проблема


На вкладке операции делаем тип операции отправлять сообщение добавляем пользователя и уже у пользователя выбираем нужный тип send_email или email sms.ru в «отправлять только» и не забываем нажать кнопку обновить и потом сохранить.


Если все сделать так то появится новое действие


Проверка отправки sms


Положим ручками порт на длинке. При просмотре события видно успешную реакцию на событие: текст, адрес отправки, время отправки.


Фото экрана телефона на который пришла sms с задержкой меньше минуты.



Старое решений email2sms


Решение выходит полностью бесплатным при использовании телефонов оператора Билайн. (других операторов не изучал, но буду рад если подскажете).
Есть сайт beonline.ru на котором можно узнать как включить получение писем с e-mail в виде SMS-сообщений. Делается это либо звонком по бесплатному номеру 06849909 либо отправкой на номер 784 следующей команды: СИМ ВКЛ-ПОЧТАНАСМС ДА.
В ответ придет SMS СИМ> ВКЛ-ПОЧТАНАСМС ДА (Ваш телефон имеет Почтовый-адрес: 79031234567@sms.beemail.ru). <П> — подробнее.

Запоминаем это адрес, хотя что там запоминать?

Все наверно догадались, что дальше необходимо настроить уведомления по e-mail на полученный выше адрес, но не все так просто. Zabbix не позволяет стандартными средствами отправлять уведомления по e-mail если smtp сервер требует аутентификацию.
Выход есть — использование сценариев которые можно найти на форуме Zabbix'a. Я использовал вариант с sendEmail.

Создаем скрипт zabbix_sendemail с правами доступа 755

#!/bin/sh
export smtpemailfrom=zabbix@yourdomain.com
export zabbixemailto=$1
export zabbixsubject=$2
export zabbixbody=$3
export smtpserver=yoursmtpserver.com
export smtplogin=smtpuser
export smtppass=smtppassword
/usr/bin/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:25 -xu $smtplogin -xp $smtppass


Подставив необходимые данные и сохраняем его в каталоге который указан в качестве AlertScriptsPath в файле конфигурации /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
#       Location of custom alert scripts
#                                       
# Mandatory: no                         
# Default:                              
AlertScriptsPath=/home/zabbix/bin/


Следующим действием необходимо создать новый Тип средства передачи в меню АдминистрированиеТипы средств передачи.
В описании пишем к примеру send email
тип выбираем сценарий
Название скрипта пишем zabbix_sendemail
Сохраняем.

Задаем средство передачи для пользователя которому нужно будем отправлять SMS. Делается это в меню АдминистрированиеПользователи. Выбираем нужного пользователя нажимаем добавить средство передачи.
Тип — выбираем send email
Отправлять — вводим полученный e-mail от Билайна
Дальше по желанию (лучше можете оставить по умолчанию).

Теперь необходимо создать действие на триггер которое и будет отправлять нам SMS.
Делается это в меню НастройкаДействие.

Создадим действие на недоступность железа.

Имя SMS
Событие Триггер
Тема по умолчанию {TRIGGER.NAME}: {STATUS} (не имеет особого значения так как SMS придет без темы)
Сообщение по умолчанию {HOSTNAME} unreachable {STATUS}
Сообщение восстановления ставим при необходимости получать сообщение о восстановлении и заполняем по аналогии с выше написанным

Дальше выбираем условия действия
Я делал так, можете написать те условия которые Вам необходимы.
Тип калькуляции (A) and (B) and and (D) and (E)
(A) Группа узлов сети = «особо важные»
(B) Описание триггера содержит «недоступен»
Важность триггера = «Чрезвычайная»
(D) Значение триггера = «ПРОБЛЕМА»
(E) Период времени в «1-7,08:00-23:59»


При совпадении всех условий срабатывает отправка сообщения.

Настраиваем операцию на действие
Тип операции Отправить сообщение
Отправить сообщение Один пользователь
Отправлять только send email
Сообщение по умолчанию ставим крыжик.
Сохраняем.

Сообщение придет при наличии сработавшего триггера содержащего в описании «недоступен» в группе узлов сети «особо важные» и во все дни недели с 8 утра до 12 ночи.
И так мы получили систему уведомления посредством SMS не использовав никаких сложных или платных решений.

UPD Вторая статья «Автоматическое переименование хостов в Zabbix, по данным из snmp sysName»
Tags:
Hubs:
+8
Comments19

Articles