Zabbix сервер — это хорошо. Правильно настроенный, он мониторит серваки и необходимые мне узлы. В случае проблем на них он с радостью уведомляет меня по электронной почте. Не так давно выяснилось, что оба наших любимых провайдера (основной и резервный интернет каналы) решили не обеспечивать ИБП свое сетевое оборудование в здании. Поэтому когда вырубают электричество (а бывает такое!) Zabbix бы и рад разбудить веселым письмом, а никак! В общем, решил заморочиться уведомлением по sms. Именно через GSM модем чтобы не было зависимости от интернета.
Поискав по интернету варианты отправки sms Zabbix-ом, нашел варианты решения, но они показались мне длинными. Поэтому сделал по своему «на коленке». Постараюсь подробно описать не сложное рабочее решение и «грабли».
Итак, что у меня было:
- Zabbix 2.4 на OC Debian 7 — мониторит несколько серваков, к одному из них подключен через USB кабель APC smart ups 3000. Мониторинг состояния UPS настроен по этой статье.
- 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"
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!
В интерфейсе заббикса идем в Администрирование — Способы оповещений.
Создать способ оповещения.
Затем настраиваем оповещение для вашего пользователя в заббиксе. Администрирование — Пользователи.
И Настройка — Действия.
Действие я сделал отдельное, чтобы sms приходили не по каждому поводу, а только при срабатывании определеных триггеров. Так как при отпавке в sms пишется только тема, то в само сообщение нет смысла что-то писать. А в условие добавил:
Вот и все! Дернул из разетки ИПБ и через несколько минут получил гневное sms от заббикса! Теперь он меня везде достанет, зараза!
P.S.: Так как электричество отключают не часто, то и расходов на sms совсем мало.