Получение специфических c данных из веб-интерфейса видеонаблюдения в Zabbix - PullRequest
0 голосов
/ 18 июня 2020

ребята! Ищу решение или идеи, как решить свою задачу.

Есть камера видеонаблюдения (производитель: Hikvision ) с доступным веб-интерфейсом. В веб-интерфейсе есть поле Имя устройства , содержащее данные, которые мне нужно получить с помощью Zabbix сервера и далее, чтобы использовать эти данные для переименования обнаруженных хостов.

Так как Hikvision камеры поддерживают SNMP , Я пробовал агент SNMP в Zabbix . Оказалось, что Hikvision MIB не содержит данных из этого поля. Также исследуя веб-интерфейс через Инструменты разработчика в Google Chrome Я наткнулся на строку URL запроса : http://10.90.187.16/ISAPI/System/deviceInfo что дает такой ответ в XML формат:

<DeviceInfo xmlns="http://www.hikvision.com/ver20/XMLSchema" version="2.0">
    <deviceName>1.5.1.1</deviceName>
    <deviceID>566eec0b-6580-11b3-81a1-1868cb48861f</deviceID>
    <deviceDescription>IPCamera</deviceDescription>
    <deviceLocation>hangzhou</deviceLocation>
    <systemContact>Hikvision.China</systemContact>
    <model>DS-2CD2155FWD-IS</model>
    <serialNumber>DS-2CD2155FWD-IS20170417AAWR749464587</serialNumber>
    <macAddress>18:68:cb:48:86:1f</macAddress>
    <firmwareVersion>V5.4.5</firmwareVersion>
    <firmwareReleasedDate>build 170124</firmwareReleasedDate>
    <encoderVersion>V7.3</encoderVersion>
    <encoderReleasedDate>build 170123</encoderReleasedDate>
    <bootVersion>V1.3.4</bootVersion>
    <bootReleasedDate>100316</bootReleasedDate>
    <hardwareVersion>0x0</hardwareVersion>
    <deviceType>IPCamera</deviceType>
    <telecontrolID>88</telecontrolID>
    <supportBeep>false</supportBeep>
    <supportVideoLoss>false</supportVideoLoss>
 </DeviceInfo>

Где тег <deviceName>1.5.1.1</deviceName> содержит необходимые данные, и теперь вопрос: как сложить два и два с помощью Zabbix . Копаясь в Zabbix документации Я нашел статью о создании Item на основе HTTP-агент с XML запрос . К сожалению, примеров, как это сделать, нет.

У кого-нибудь был такой опыт? Любые подсказки будут полезны

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете создать элемент HTTP-агента, установить для него тип TEXT и указать его на http://10.90.187.16/ISAPI/System/deviceInfo (не забудьте аутентификацию, если требуется!), Zabbix получит полную XML.

Чтобы получить желаемое значение, вы должны создать зависимый элемент, указать его на предыдущий элемент и настроить шаг предварительной обработки. Создайте одно правило предварительной обработки XML Xpath с параметром string(/DeviceInfo/DeviceName), чтобы получить значение 1.5.1.1

Если вы хотите получить версию прошивки, создайте другой зависимый элемент и установите XPath на string(/DeviceInfo/FirmwareVersion) и и так далее для каждого элемента, который вам нужен.

Если вам нужно одно значение, вы можете использовать один элемент, добавив правило предварительной обработки к элементу агента http. Я использую свое решение для гибкости, возможно, однажды мне понадобится еще один элемент XML или, может быть, обновление прошивки добавит какой-то элемент на страницу.

Зависимые элементы более гибкие, но, конечно, полный XML использует больше места в базе данных для вещей, которые вам сейчас не нужны: это компромисс, в любом случае работает!

...