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
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 совсем мало.
Комментарии (18)
fspare
09.11.2015 17:16на сколько это надежно?
n0wi
09.11.2015 19:51Система работает уже около месяца. Было проведено 4 проверки в разное время (отключение ИБП из сети). Все четыре раза система добросовестно отрабатывала отправкой sms. Плюс к этому, для проверки были подключены другие триггеры, при срабатывании которых также приходили sms. Пока мне сложно представить, что может пойти не так.
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;
la0
09.11.2015 19:43Вот тут я писал, почему отказался от GSM как основного канала уведомлений мониторинга.
Вкратце: связь иногда пропадает (на короткий промежуток времени: на 10-30 минут раз в 1-2 месяца); Теперь GSM всего лишь альтернативный канал (который потребовался всего раз)n0wi
09.11.2015 19:58Интересно. Данный вариант не рассчитывался как основной. GSM только в случает отключения электроэнергии, а следовательно отключения оборудования провайдера — когда основные каналы падают.
la0
09.11.2015 20:05На всякий случай уточню свой комментарий:
> отказался от GSM как основного канала уведомлений мониторинга.
читать как
> отказался от GSM как основного канала SMS-уведомлений мониторинга.
Понятно, что обычно push и email основные, SMS для чего-то очень важного.
SMS, как оказалось, тоже нужно дублировать.
PS БС скорее всего находится рядом с вашим объектом и при проблемах с электричеством её тоже может этими проблемами накрыть
TaHKucT
09.11.2015 20:38почему вы и пользователя в группу добавили и gnokii через sudo запускаете? Мне кажется одно из этих действий лишнее.
Дальше логинимся под пользователем zabbix и пишем очень простой скрипт.
# nano /home/user/smsscript
# в начале строки обычно значит что команда выполняется от рута, но это не соответствует тому, что написано строкой выше.n0wi
09.11.2015 21:00Как ни странно, у меня заработало только в случае когда и пользователь в группе и чрез sudo. За # спасибо, подправил, все верно.
smartlight
09.11.2015 20:44пилите проверку счета на мопеде через забикс, а то когда упадёт и денег на счету не окажется
saamich
09.11.2015 21:41+2У меня на 2.2 zabbix напрямую работает с модемом — проблем не замечено, судя по докам в 2.4 это также доступно. У ваше метода со скриптом есть преимущества перед прямой работой zabbix с модемом?
blind_oracle
09.11.2015 22:35Плюсую. Зачем эти пляски с бубном если заббикс умеет общаться с GSM модемом сам безо всяких прослоек?
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/ttySMSsaamich
10.11.2015 00:07centos 5.11(ставилось уже не помню на какой), подобной проблемы нет, модем тоже какой-то zte.
yosemity
10.11.2015 00:13Обычно триггеры и соответственно уведомления от них создаются на «серьезность» проблемы. Т.е., допустим (алгоритм исключительно для примера):
1) Disaster — звонок от «железной леди» + SMS + Почта, мессенджеры + дашборд
2) High — SMS + Почта, мессенджер + дашборд
3) Average, Warning — Почта, мессенджер + дашборд
4) Info — просто на дашборд, который желательно вывести на отдельный экран не стену.
В итоге, при добавлении новых итемов, тригеров и назначении их важности они автоматически попадают в нужную категорию уведомлений для нужных юзеров. К примеру, можно настроить, чтобы звонок и СМС в 3 часа ночи приходили только дежурному админу, а днем — всем.
Естественно, схема уведомлений может быть намного сложнее, но делать отдельный алерт на каждый триггер не стоит.
evg_krsk
Вы сами то читаете, что пишете?
n0wi
Прошу прощения, что именно Вам не понравилось?