从Zabbix中的视频监控Web界面获取特定数据



>伙计们!我正在寻找有关如何解决任务的解决方案或一些想法。

有一个视频监控摄像头(供应商:海康威视( 具有可访问的网络界面. 在Web界面中,有一个字段设备名称,其中包含我需要通过Zabbix服务器检索的数据,并进一步使用此数据重命名发现的主机。

由于海康威视相机支持SNMP, 我已经尝试了Zabbix中的SNMP 代理.我原来海康威视 MIB不包含来自该领域的数据. 同样通过谷歌浏览器中的开发人员工具探索 Web 界面,我偶然发现了字符串请求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文档,我发现了一篇关于使用XML请求创建基于HTTP代理的项目的文章。不幸的是,没有任何示例可以准确地做到这一点。

有人有这样的经历吗?任何线索都会有所帮助

你可以创建一个HTTP代理项,将其设置为TEXT类型并将其指向 http://10.90.187.16/ISAPI/System/deviceInfo(如果需要,不要忘记身份验证!(,Zabbix将检索完整的XML。

若要获取所需的值,必须创建依赖项,将其指向上一项并设置预处理步骤。 使用参数string(/DeviceInfo/DeviceName)创建单个 XML Xpath 预处理规则以获取1.5.1.1

如果要获取固件版本,请创建另一个依赖项,并为所需的每个元素设置 XPath 以string(/DeviceInfo/FirmwareVersion)依此类推。

如果需要单个值,可以使用单个项目,将预处理规则添加到 http 代理项目。我使用我的解决方案是为了灵活性,也许有一天我需要另一个 XML 元素,或者固件更新会向页面添加一些元素。

依赖项更灵活,但当然,完整的 XML 会在数据库中使用更多的存储空间来存储您现在不需要的东西:这是一种权衡,无论哪种方式都有效!

最新更新