[Из песочницы] Оповещения Zabbix через sms используя GSM модем. Простая настройка

c7523b6b523f4c3fb6ba6a514a446c27.jpg

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</blockquote>
Вставляем GSM модем в сервак и проверяем:

<source># 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"
<source>
</spoiler>
Сохраняем. Именно /usr/bin/sudo и /usr/bin/gnokii — для меня это оказалось важно!

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

<source>chmod +x /home/user/smsscript<source> 
Проверяем работу скрипта:

<source>/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 совсем мало.

© Habrahabr.ru