В данной статье опишу, как я настраивал SMS оповещение в Zabbix о проблемах в сети. Делал я это чтоб не зависеть от интернета. Ведь как-то не правильно, получается, сообщать о проблемах сети по сети))). Модем который я подключал Huawei e171 от МТС достался на халяву, по акции от магазина, когда ноутбук покупал)). У нас в регионе стоимость SMS самая дешевая у TELE2 так что первое что я сделал это разблокировал модем с помощью huawei modem unlocker v 1.1. Делается это довольно просто с помощью одной круглой кнопки). Далее вставляем симку TELE2 в модем и подключаем его к FreeBSD 8.3, выполним
inspection# dmesg -a
видим:
ugen3.2: <huawei technology="Technology"></huawei> at usbus3
ugen3.2: <huawei technology="Technology"></huawei> at usbus3 (disconnected)
ugen3.2: <huawei technology="Technology"></huawei> at usbus3
u3g0: <huawei technology="Technology" huawei="HUAWEI" mobile="mobile" class="class" 0="0" addr="addr" 2="2"> on usbus3
u3g0: Found 4 ports.
далее проверку
inspection# ls -lah /dev/cuaU*
crw-rw---- 1 uucp dialer 0, 112 Sep 20 09:46 /dev/cuaU0.0
crw-rw---- 1 uucp dialer 0, 113 Sep 19 13:24 /dev/cuaU0.0.init
crw-rw---- 1 uucp dialer 0, 114 Sep 19 13:24 /dev/cuaU0.0.lock
crw-rw---- 1 uucp dialer 0, 118 Sep 19 13:24 /dev/cuaU0.1
crw-rw---- 1 uucp dialer 0, 119 Sep 19 13:24 /dev/cuaU0.1.init
crw-rw---- 1 uucp dialer 0, 120 Sep 19 13:24 /dev/cuaU0.1.lock
crw-rw---- 1 uucp dialer 0, 124 Sep 19 13:24 /dev/cuaU0.2
crw-rw---- 1 uucp dialer 0, 125 Sep 19 13:24 /dev/cuaU0.2.init
crw-rw---- 1 uucp dialer 0, 126 Sep 19 13:24 /dev/cuaU0.2.lock
crw-rw---- 1 uucp dialer 0, 130 Sep 19 13:24 /dev/cuaU0.3
crw-rw---- 1 uucp dialer 0, 131 Sep 19 13:24 /dev/cuaU0.3.init
crw-rw---- 1 uucp dialer 0, 132 Sep 19 13:24 /dev/cuaU0.3.lock
Модем опознался как ugen3.2 и еще добавился в девайсы как cuaU0.0 это устройство и юзаем.
Далее добавляем пользователя Zabbix в группу "uucp" и "dialer" для того чтобы можно было использовать модем этим демоном.
inspection# pw groupmod uucp -m zabbix
inspection# pw groupmod dialer -m zabbix
inspection# pw groupshow dialer
dialer:*:68:zabbix
inspection# pw groupshow uucp
uucp:*:66:zabbix
inspection# rehash
inspection# /usr/local/etc/rc.d/zabbix_server restart
Далее в Zabbix добавим новый способ оповещения с указанным устройством, и настроим уведомления для использования данного способа оповещения. Администрирование > Способы оповещений
Тип: SMS
GSM модем: /dev/cuaU0.0
Теперь в своем профиле пользователя необходимо указать свой номер телефона и в Zabbix зайти Настройки > Действия с указанием об отправке уведомлений и по СМС. На этом можно и закончить, но скорее всего сообщения SMS будут приходить в тройном экземпляре. Решается это так:
Изменяем исходники Zabbix, а именно собираем Zabbix-server без опции очистки
inspection# make install
Так в директории порта останутся исходники. Идем в папку /usr/ports/net-mgmt/zabbix2-server/work/zabbix-2..../src/libs/zbxmedia/
и находим sms.c и в нем правим
zbx_sms_scenario scenario[] =
{
{ZBX_AT_ESC , NULL , 0}, /* Send <esc></esc> */
{"AT+CMEE=2\r" , ""/*"OK"*/ , 5}, /* verbose error values */
{"ATE0\r" , "OK" , 5}, /* Turn off echo */
{"AT\r" , "OK" , 5}, /* Init modem */
{"AT+CMGF=1\r" , "OK" , 5}, /* Switch to text mode */
{"AT+CMGS=\"" , NULL , 0}, /* Set phone number */
{number , NULL , 0}, /* Write phone number */
{"\"\r" , "> " , 5}, /* Set phone number */
{message , NULL , 0}, /* Write message */
{ZBX_AT_CTRL_Z , "+CMGS: " , 40}, /* Send message */
{NULL , "OK" , 1}, /* ^Z */
{NULL , NULL , 0}
};
на
zbx_sms_scenario scenario[] =
{
{ZBX_AT_ESC , NULL , 0}, /* Send <esc></esc> */
{"AT+CMEE=2\r" , ""/*"OK"*/ , 5}, /* verbose error values */
{"ATE0\r" , "OK" , 5}, /* Turn off echo */
{"AT\r" , "OK" , 5}, /* Init modem */
{"AT+CMGF=1\r" , "OK" , 5}, /* Switch to text mode */
{"AT+CMGS=\"" , NULL , 0}, /* Set phone number */
{number , NULL , 0}, /* Write phone number */
{"\"\r" , "> " , 5}, /* Set phone number */
{message , NULL , 0}, /* Write message */
{ZBX_AT_CTRL_Z , NULL , 40}, /* Send message */
{NULL , NULL , 1}, /* ^Z */
{NULL , NULL , 0}
};
Cохраняем и делаем
inspection# make reinstall.
После этого SMS троить перестанут)
Если появляется ошибка Expected [+CMGS: ] received [OK]
Для решения ошибки проверяем чтоб сообщения были на латинском языке и количество символов не превышало допустимое оператором значение.