При переходе по ссылке http://IP_OPENVOX/service?action=get_gsminfo, или http://IP_OPENVOX/X/service?action=get_gsminfo (где X — номер модуля, больше 1), можно увидеть в json-формате статус портов (span-нов). Если Web-сервер на Openvox, для авторизации использует метод Authorization: Basic, то мониторить статус портов (span-нов), можно средствами zabbix. Но на некоторых (более новых) Openvox-шлюзах используется Authorization: Digest метод авторизации, который не поддерживается системой zabbix, но поддерживается CURL на php. Для реализации поставленной задачи, нужно написать внешний php-скрипт.
Пишем php-скрипт sim_control_signal.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php //задаем логин и пароль для входа в Openvox $login='login:password'; //дальше не редактируем ini_set('error_reporting', E_ALL); ini_set('display_errors', 0); ini_set('display_startup_errors', 0); if(isset($_GET["ip"])&&isset($_GET["board"])&&isset($_GET["port"])&&isset($_GET["obj"])) { //подключаю библиотеки для удобной работы с json форматом require_once('json/json.php'); require_once('json/jsonpath-0.8.1.php'); $ip=$_GET["ip"]; $board=$_GET["board"]; $port=$_GET["port"]; $obj=$_GET["obj"]; if($board=='1') $url='http://'.$ip.'/service?action=get_gsminfo'; else $url='http://'.$ip.'/'.$board.'/service?action=get_gsminfo'; $headers_auth=array(CURLAUTH_BASIC,CURLAUTH_DIGEST); $h=0; $parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); while($httpCode!=200){ $options = array( CURLOPT_URL => $url, CURLOPT_USERPWD => $login, CURLOPT_HTTPAUTH => $headers_auth[$h], CURLINFO_HEADER_OUT => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false ); $ch = curl_init(); curl_setopt_array($ch, $options); $resp = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $h++; if($h>100){ echo "Error to edit parameters"; break; } } $json_object = $parser->decode($resp); $result = $parser->encode(jsonPath($json_object, "$.".$port."[0].".$obj)); preg_match('/\[\"(.*)\"\]/', $result, $match); echo $match[1]; } else echo "error parameters"; ?> |
Примеры использования.
Строка запроса:
1. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=2&port=4&obj=operator
2. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=1&port=2&obj=signal
3. http://AddressToWebServer/sim_control_signal.php?ip=192.168.0.9&board=3&port=1&obj=status
Вывод:
1. MTS UKR
2. 27
3. Power on, Provisioned, Up, Active, Standard
где:
AddressToWebServer — адрес web-сервера, где хранится скрипт sim_control_signal.php;
192.168.0.9 — IP адрес Openvox;
board — номер модуля;
port — номер порта (span-а), куда вставлена SIM-карта;
obj — название объекта, значение которого нужно вывести.
Далее нужно создать шаблон в zabbix, и наслаждаться 🙂 .
Готовый шаблон для zabbix, качаем тут.
Для работы шаблона, каждую SIM-карту нужно создавать как новый узел сети. В «Интерфейсы агента» → «IP адрес», указываем IP адрес Openvox. Во вкладке «Макросы», создаем 2 переменные: {$BOARD}, где указываем значение номер модуля, и переменная {$PORT}, где указываем номер порта (span-а), куда вставлена SIM-карта.
Библиотеку JSON качаем тут.
Оставить комментарий