FreeBSD+Zabbix+Huawei. Печать

В данной статье опишу, как я настраивал 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. umass0: <huawei technology="Technology" huawei="HUAWEI" mobile="mobile" class="class" 0="0" addr="addr" 2="2"> on usbus3 umass0: SCSI over Bulk-Only; quirks = 0x0000 umass0:0:0:-1: Attached to scbus0 umass1: <huawei technology="Technology" huawei="HUAWEI" mobile="mobile" class="class" 0="0" addr="addr" 2="2"> on usbus3 umass1: SCSI over Bulk-Only; quirks = 0x0000 umass1:1:1:-1: Attached to scbus1 (probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error (probe0:umass-sim0:0:0:0): SCSI status: Check Condition (probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present) cd0 at umass-sim0 bus 0 scbus0 target 0 lun 0 cd0: <huawei mass="Mass" storage="Storage" 2="2" 31="2.31"></huawei> Removable CD-ROM SCSI-2 device cd0: 40.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present (probe1:umass-sim1:1:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 (probe1:umass-sim1:1:0:0): CAM status: SCSI Status Error (probe1:umass-sim1:1:0:0): SCSI status: Check Condition (probe1:umass-sim1:1:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present) da0 at umass-sim1 bus 1 scbus1 target 0 lun 0 da0: <huawei sd="SD" storage="Storage" 2="2" 31="2.31"></huawei> Removable Direct Access SCSI-2 device da0: 40.000MB/s transfers da0: Attempt to query device size failed: NOT READY, Medium not present</huawei></huawei></huawei>

далее проверку

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]

Для решения ошибки проверяем чтоб сообщения были на латинском языке и количество символов не превышало допустимое оператором значение.

Обсудить и спросить можно на форуме.

Обновлено 13.10.2016 16:58
 

Добавить комментарий

Защитный код
Обновить