Zabbix сервер — это хорошо. Правильно настроенный, он мониторит серваки и необходимые мне узлы. В случае проблем на них он с радостью уведомляет меня по электронной почте. Не так давно выяснилось, что оба наших любимых провайдера (основной и резервный интернет каналы) решили не обеспечивать ИБП свое сетевое оборудование в здании. Поэтому когда вырубают электричество (а бывает такое!) Zabbix бы и рад разбудить веселым письмом, а никак! В общем, решил заморочиться уведомлением по sms. Именно через GSM модем чтобы не было зависимости от интернета.

Поискав по интернету варианты отправки sms Zabbix-ом, нашел варианты решения, но они показались мне длинными. Поэтому сделал по своему «на коленке». Постараюсь подробно описать не сложное рабочее решение и «грабли».

Итак, что у меня было:

  1. Zabbix 2.4 на OC Debian 7 — мониторит несколько серваков, к одному из них подключен через USB кабель APC smart ups 3000. Мониторинг состояния UPS настроен по этой статье.
  2. GSM модем Huawei e1550 (Мегафон) который валялся дома со времен отсутствия проводного интернета. Как показала практика — вставив в уже настроенную систему другой модем Huawei все так же работает, не требуя перенастройки!

Для отправки из терминала sms я использовал gnokii.

Поехали:

# apt-get install gnokii

Вставляем GSM модем в сервак и проверяем:

# lsusb

Среди прочего видим что-то типа:

Bus 001 Device 009: ID 12d1:14ac Huawei Technologies Co., Ltd.


Проверяем определился ли как модем:

# ls /dev/ttyUSB*

Если пусто (а меня было пусто):

# apt-get install usb-modeswitch

Вытаскиваем и заново вставляем модем.

Проверяем определился ли:

# ls /dev/ttyUSB*

Видим что-то типа:

/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2


Осталось чуть-чуть до первой отправки sms!

Создаем конфиг gnokii. Я положил его в /home

# nano /home/user/sms.conf

Текст конфига
[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200


Сохраняем и тестируем:

# echo "text" | gnokii --config /home/user/sms.conf --sendsms +7ХХХХХХХХХХ

(+7ХХХХХХХХХХ — тут, конечно, номер, на который надо отправить)

Должна прийти sms без проблем. Обо всем этом есть много инструкций на просторах интернета и до этого момента проблем у меня не возникло.

Дальше важно!

Заббикс в системе работает от пользователя zabbix. Разрешаем ему использовать модем.

# nano /etc/group

dialout:x:20:zabbix


Иначе при отправке от этого пользователя получим что-то типа:

GNOKII Version 0.6.30
Gnokii serial_open: open: Permission denied
Couldn't open ATBUS device: Permission denied
Telephone interface init failed: Command failed.
Quitting.
Command failed.


Еще при отправке встречал ошибку:

Cannot open logfile ./gnokii-errors
WARNING: cannot open logfile, logs will be directed to stderr


Это значит не нашлось файла по пути:

~/.cache/gnokii/gnokii-errors


Изменяем разрешения для пользователя использовать sudo без пароля:

# nano /etc/sudoers

zabbix  ALL=(ALL) NOPASSWD: /usr/bin/gnokii


Дальше логинимся под пользователем zabbix и пишем очень простой скрипт.

 nano /home/user/smsscript


Текст скрипта
#!/bin/sh
zabbixesmsto=$1
zabbixsubject=$2
echo "$zabbixsubject" | /usr/bin/sudo /usr/bin/gnokii --config /home/user/sms.conf --sendsms "$zabbixesmsto"



Сохраняем. Именно /usr/bin/sudo и /usr/bin/gnokii — для меня это оказалось важно!

Не забываем от рута сделать:

# chmod +x /home/user/smsscript

Проверяем работу скрипта:

/home/user/smsscript +7XXXXXXXXXX test

Если пришла sms — все практически готово! Осталось прикрутить к Zabbix-у. Если не пришла, то проверяем, все ли сделали так как написано выше.

Я создавал скрипт для заббикса в /home/user/ потому что в конфиге zabbix_server.conf написно: AlertScriptsPath=/home/user/

Если у вас не так, то либо меняем расположение скрипта, либо изменяем в конфиге путь на /home/user/ — не забыть рестаратнуть zabbix server!

В интерфейсе заббикса идем в Администрирование — Способы оповещений.

Создать способ оповещения.

image

Затем настраиваем оповещение для вашего пользователя в заббиксе. Администрирование — Пользователи.

image

И Настройка — Действия.

image

Действие я сделал отдельное, чтобы sms приходили не по каждому поводу, а только при срабатывании определеных триггеров. Так как при отпавке в sms пишется только тема, то в само сообщение нет смысла что-то писать. А в условие добавил:

image

Вот и все! Дернул из разетки ИПБ и через несколько минут получил гневное sms от заббикса! Теперь он меня везде достанет, зараза!

P.S.: Так как электричество отключают не часто, то и расходов на sms совсем мало.

Комментарии (18)


  1. evg_krsk
    09.11.2015 16:32
    -4

    Вы сами то читаете, что пишете?


    1. n0wi
      09.11.2015 16:46

      Прошу прощения, что именно Вам не понравилось?


  1. fspare
    09.11.2015 17:16

    на сколько это надежно?


    1. n0wi
      09.11.2015 19:51

      Система работает уже около месяца. Было проведено 4 проверки в разное время (отключение ИБП из сети). Все четыре раза система добросовестно отрабатывала отправкой sms. Плюс к этому, для проверки были подключены другие триггеры, при срабатывании которых также приходили sms. Пока мне сложно представить, что может пойти не так.


    1. Godless
      10.11.2015 13:50

      достаточно. только по непонятным причинам иногда отваливается из системы сам модем, соответственно пропадает USB0, но присутствуют остальные… Решается или перетыканием модема, или программно:

      скрипт
      #!/bin/sh
      
      if [ $( ls /dev/tty* | grep 'USB0'  | wc -l ) -eq 0  ]; then
          usb_modeswitch -R -v 12d1 -p 1003
      fi;
      
      В крон его раз в полчаса и норм.


  1. UrbanRider
    09.11.2015 19:38

    Спасибо. Прикручу себе.


  1. la0
    09.11.2015 19:43

    Вот тут я писал, почему отказался от GSM как основного канала уведомлений мониторинга.
    Вкратце: связь иногда пропадает (на короткий промежуток времени: на 10-30 минут раз в 1-2 месяца); Теперь GSM всего лишь альтернативный канал (который потребовался всего раз)


    1. n0wi
      09.11.2015 19:58

      Интересно. Данный вариант не рассчитывался как основной. GSM только в случает отключения электроэнергии, а следовательно отключения оборудования провайдера — когда основные каналы падают.


      1. la0
        09.11.2015 20:05

        На всякий случай уточню свой комментарий:
        > отказался от GSM как основного канала уведомлений мониторинга.
        читать как
        > отказался от GSM как основного канала SMS-уведомлений мониторинга.

        Понятно, что обычно push и email основные, SMS для чего-то очень важного.
        SMS, как оказалось, тоже нужно дублировать.

        PS БС скорее всего находится рядом с вашим объектом и при проблемах с электричеством её тоже может этими проблемами накрыть


  1. TaHKucT
    09.11.2015 20:38

    почему вы и пользователя в группу добавили и gnokii через sudo запускаете? Мне кажется одно из этих действий лишнее.

    Дальше логинимся под пользователем zabbix и пишем очень простой скрипт.

    # nano /home/user/smsscript

    # в начале строки обычно значит что команда выполняется от рута, но это не соответствует тому, что написано строкой выше.


    1. n0wi
      09.11.2015 21:00

      Как ни странно, у меня заработало только в случае когда и пользователь в группе и чрез sudo. За # спасибо, подправил, все верно.


  1. smartlight
    09.11.2015 20:44

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


    1. icCE
      10.11.2015 02:19

      Неплохо было бы мониторить мониторинг :)


  1. saamich
    09.11.2015 21:41
    +2

    У меня на 2.2 zabbix напрямую работает с модемом — проблем не замечено, судя по докам в 2.4 это также доступно. У ваше метода со скриптом есть преимущества перед прямой работой zabbix с модемом?


    1. blind_oracle
      09.11.2015 22:35

      Плюсую. Зачем эти пляски с бубном если заббикс умеет общаться с GSM модемом сам безо всяких прослоек?


      1. yosemity
        09.11.2015 23:58

        И еще один плюс. У нас Заббикс 2.2, дебиан 7, работает нативно с модемом без использования «скрипта».
        Нюанс был в том, что при ребуте мог измениться порт модема, а ребут иногда нужен. Мой коллега решил так:

        cat /etc/udev/rules.d/55-zteMF192-persistent-serial.rules

        # ZTE MF192 ZTE WCDMA Technologies MSM
        SUBSYSTEMS==«usb», ATTRS{idVendor}==«19d2», ATTRS{idProduct}==«1217»,SYMLINK+=«ttySMS»

        Модем по данным системы — ZTE MF192+
        В итоге в «Media Types» Zabbix`а прописывается тип: SMS и порт: /dev/ttySMS


        1. saamich
          10.11.2015 00:07

          centos 5.11(ставилось уже не помню на какой), подобной проблемы нет, модем тоже какой-то zte.


  1. yosemity
    10.11.2015 00:13

    Обычно триггеры и соответственно уведомления от них создаются на «серьезность» проблемы. Т.е., допустим (алгоритм исключительно для примера):
    1) Disaster — звонок от «железной леди» + SMS + Почта, мессенджеры + дашборд
    2) High — SMS + Почта, мессенджер + дашборд
    3) Average, Warning — Почта, мессенджер + дашборд
    4) Info — просто на дашборд, который желательно вывести на отдельный экран не стену.

    В итоге, при добавлении новых итемов, тригеров и назначении их важности они автоматически попадают в нужную категорию уведомлений для нужных юзеров. К примеру, можно настроить, чтобы звонок и СМС в 3 часа ночи приходили только дежурному админу, а днем — всем.

    Естественно, схема уведомлений может быть намного сложнее, но делать отдельный алерт на каждый триггер не стоит.