0

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

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

由于海康威视摄像机支持SNMP,所以我在Zabbix中尝试了SNMP 代理。我发现海康威视 MIB不包含该字段的数据。通过Google Chrome中的开发人员工具探索网络界面时,我偶然发现了字符串Request 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 代理的项目的文章。不幸的是,没有任何示例如何准确地做到这一点。

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

4

1 回答 1

0

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

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

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

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

依赖项更灵活,但当然完整的 XML 在数据库中为您现在不需要的东西使用了更多存储空间:这是一种折衷,任何一种方式都有效!

于 2020-06-18T07:50:16.027 回答