伙计们!我正在寻找一个解决方案或一些关于如何解决我的任务的想法。
有一个视频监控摄像头(供应商:Hikvision)有一个可访问的网络接口。在web接口中,有一个字段https://i.stack.imgur.com/4vGs8.jpg,其中包含我需要通过Zabbix服务器检索的数据,并进一步使用这些数据重命名已发现的主机。
自从Hikvision相机支持SNMP以来,我已经尝试过Zabbix中的SNMP代理。我发现Hikvision 不包含来自该字段的数据。此外,通过Developer tools in Google 探索网络接口时,我偶然发现了字符串https://i.stack.imgur.com/oyEKD.jpg,它以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将两个和两个放在一起。深入研究文档,我发现了一篇关于基于HTTP代理和XMLRequest创建项的文章。不幸的是,没有任何经验表明,如何做到这一点。
有人有过这样的经历吗?任何线索都会有帮助
发布于 2020-06-18 07:50:16
您可以创建一个HTTP项,将其设置为TEXT
类型,并将其指向http://10.90.187.16/ISAPI/System/deviceInfo (如果需要的话,不要忘记身份验证!),Zabbix将检索完整的XML。
要获得所需的值,您必须创建一个依赖项,将其指向前一个项并设置一个预处理步骤。使用参数string(/DeviceInfo/DeviceName)
创建单个Xpath预处理规则以获取1.5.1.1
值
如果您想获得固件版本,请创建另一个依赖项,并为所需的每个元素设置XPath到string(/DeviceInfo/FirmwareVersion)
等。
如果需要单个值,则可以使用单个项,将预处理规则添加到http代理项中。我使用我的解决方案来实现灵活性,也许有一天我会需要另一个XML元素,或者固件更新会给页面添加一些元素。
依赖项更灵活,但是当然,完整的XML在数据库中使用更多的存储来处理您现在不需要的东西:这是一种权衡,无论哪种方式都是有效的!
https://stackoverflow.com/questions/62443627
复制相似问题