Учим Zabbix отправлять SMS оповещения

This topic has been discussed on the Net before. But I’d like to show my method. There are two ways to send SMS:

  • Through modem/telephone
  • Through SMS-gateway

If you are the only administrator in the system, you can send Zabbix notifications through the modem (the example of the script for the modem I will show at the end of the article). But if you have two or more administrators, who should get the notifications, you may face some problems with sending SMS. That is why I have chosen the second way to notify the administrators. Of course, if there is a problem with Zabbix itself, you won’t get any SMS. In this case you can combine both ways and use the modem only to notify of the problem with Zabbix-server.

Тема стара как Мир, и давно избита. Но я бы хотел внести свои 5 копеек. Есть всего 2 способа отправлять SMS:

  • Через модем/телефон
  • Через SMS-шлюз

Если вы один администратор в системе, то вам вполне можно отправлять уведомления Zabbix через модем (пример скрипта для модема я покажу в конце статьи). Но если у вас 2 и более администраторов, которые должны получать уведомления, вы можете столкнуться с коллизиями при отправке SMS. Поэтому я выбрал для оповещений администраторов 2-й вариант. Конечно в случае если произойдет проблема с самим Zabbix-сервером, то вы об этом SMS не получите. Но в этом случае возможно объединить эти 2 способа, оставив модем только для оповещений на случай проблем с самим Zabbix-сервером.

First make the proper settings of Zabbix-server. For this set in the configuration file /etc/zabbix/zabbix_server.cfg the parameter AlertScriptsPath. This parameter defines the catalog where our scrips for notifications will be found. In my example the parameter is the following:

After changing the parameter restart Zabbix-server:

Now let’s decide which SMS-gateway we are going to use. I have chosen smsprogroup.ru. Why exactly it:

  1. The registration takes no more than one minute
  2. After registration there are 20 text messages SMS
  3. The price for one SMS is 1 cent and less
  4. The ability to write the name of the sender in the settings

After registration on the website smsprogroup.ru choose the tariff API. It will lessen the price of the SMS. At the time of writing this article the price of the SMS was only 1 cent.

The script for sending messages should be found in tha same catalog which is defined in the parameter AlertScriptsPath:

Values admin@mail.ru and your_password should be changed for those which you used when registered on smsprogroup.ru. Save the script and set the execute permissions:

Open web-interface of Zabbix-server and login as admin You should create the new type of the notifications. Open the new tab Administration › Media types and push the button Create media type. In the new window with set the following values:

Then we should attach the SMS notifications to Zabbix-user. Then open Administration › Users  choose the user Admin, open the tab Media and push Add. In the new form fill in the following values:

Push the buttons Add and Save. If you have the group of servers which are managed by the administrators except you, then (I think you have already given them permissions) you should open Configuration › Actions and create new Action for this group of administrators.

And I have promised to show the example of sending SMS through GSM-modem. For the proper work of the script you need the utility with configuration file /etc/gnokii.conf:

The script sms.sh will be the following:

That is all for now. Good luck in administrating and have less SMS from Zabbix at night =)Для начала произведем необходимыю настройку Zabbix-сервера. Для этого необходимо указать в файле конфигурации /etc/zabbix/zabbix_server.cfg параметр AlertScriptsPath. Этот параметр определяет каталог, в котором будут находиться наши скрипты для оповещений. В моем примере параметр выглядит так:

После изменения параметра необходимо перезапустить Zabbix-сервер:

Теперь давайте определимся с тем какой SMS-шлюз будем использовать. Для своих целей я выбрал smsprogroup.ru. Почему именно он:

  1. Регистрация занимает не более минуты
  2. После регистрации есть 20 тестовых SMS
  3. Цена на 1 SMS стоит 30 копеек и менее
  4. Возможность в настройках указать имя отправителя

После регистрации на сайте smsprogroup.ru выберите тарифный план API. Это значительно уменьшит цену за SMS-сообщение. На момент написания статьи цена составляла всего 30 копеек за SMS.

Сам скрипт для отправки сообщения необходимо разместить в том же каталоге, который указан в параметре AlertScriptsPath:

Значения admin@mail.ru и your_password необходимо изменить на те, что вы указали при регистрации на smsprogroup.ru. Сохраните скрипт и задайте права на выполнение:

Откройте web-интерфейс Zabbix-сервера и авторизуйтесь под администратором. Нам нобходимо создать новый тип уведомлений . Переходим на вкладку Administration › Media types и нажимаем кнопку Create media type. В открывшихся настройках прописываем следующие значения:

Далее, нам необходимо нашему пользователю привязать SMS уведомления. Для этого переходим Administration › Users  выбираем пользователя Admin, переходим на вкладку Media и жмем Add. В открывшейся форме необходимо заполнить значения следующим образом:

Нажимаем кнопки Add и Save. Если у вас есть группа серверов которые обслуживают другие администраторы, кроме вас, то (я предполагаю что необходимые права вы им уже дали) дополнительно необходимо зайти в Configuration › Actions и создать новый Action для этой группы администраторов.

В принципе это все, что я хотел рассказать в заметке…Ах ну да, я же обещал еще показать пример для отправки SMS оповещения через GSM-модем. Для работы скрипта необходима утилита gnokii с конфигурационным файлом /etc/gnokii.conf:

Сам скрипт sms.sh будет выглядеть так:

Ну вот, теперь точно все! Удачи в администрировании и поменьше вам ночных SMS уведомлений от Zabbix =)

10 комментариев к “Учим Zabbix отправлять SMS оповещения

  1. Добрый день!
    Помогите разобраться, вроде все сделал по инструкции, но смс не отправляются. При этом права на выполнение скрипта есть, в zabbix в Администрирование-Аудит-Действия написано что было отправлено смс на мой номер с таким то текстом через NEW_SMS. На что стоит обратить внимание?

    1. Посмотрите что у вас в /var/log/sms.log. Возможно пароль не верный или кодировка не нравится.
      Также попробуйте вручную скрипт запустить, возможно где-то ошибка.

      1. Логи пустые.
        Сделал следующие: Переделал скрипт, присвоил переменным PHONENR и STR свои значения, скрипт из zabbix срабатывает. Смс приходит. Запускаю из командной строки скрипт таким образом:
        ./sms.sh 79080000000 Subject Text — Все приходит.
        Делаю скрипт только с записью параметров в лог — нечего не пишется. запускаю скрипт руками с параметрами, они записываются отлично.
        Может я что то не понимаю, но такое чувство, что zabbix при запуске скрипта не добавляет параметры командной строки $1 $2 $3

        1. Даже если zabbix не отправляет ничего скрипту, в логах все равно должны появиться записи «To: Text:». Проверьте. Если есть — значит действительно по какой то причине zabbix не передает параметры. В этом случае надо посмотреть версию zabbix. Возможно в ней есть такой баг.

      2. Все, разобрался. Как обычно дело было не в бобине. Дело было в русском языке передаваемых параметров на сервер заббикса, который не поддерживает русский.

  2. Как объединить несколько смс при отправке в одну, 10 оповещений сразу жестко… Подскажите, как реализовать?

    1. Делайте через очереди. Один скрипт собирает сообщения. Второй по крону выполняет их объединение и отправку.

  3. Сделал так как вы говорите .. создал файлик, присвоил ему 777 права, туда скопировал текст :
    #!/bin/sh
    LOGFILE=»/var/log/sms.log»
    echo «To: ‘$1’ Text: ‘$3′» >> ${LOGFILE}
    PHONENR=echo "$1" | sed s#\s##
    /bin/echo «$3» | /usr/bin/gnokii —config /etc/gnokii.conf —sendsms «${PHONENR}» 1>>${LOGFILE} 2>&1
    запустил телнет…. ввожу команду и получаю вот это:(( ::

    zabbix:~ # /home/zabbix/alertscripts/sms.sh 7961****** Subject Text 7654
    /home/zabbix/alertscripts/sms.sh: line 3: syntax error near unexpected token ;&'
    /home/zabbix/alertscripts/sms.sh: line 3:
    echo «To: ‘$1’ Text: ‘$3′» >> ${LOGFILE} ‘

    Что не так в скрипте ? что я сделал не так ?

    З.Ы, номер телефона естесвенно СКРЫЛ звездочками :))

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *