以DVR Trassir SDK为示例为Zabbix创建模板

该模板的目的是通过SDK Web服务器在基于linux的相同软件的控制下,自动监视基于Trassir注册商的视频监视系统的服务器。

Trassir SDK包含在Web服务器设置中,您还必须在此处指定密码。 根据制造商的文档,您无需创建单独的帐户即可获取有关服务器的读数。

Trassir SDK通过请求提供对服务器状态的访问

https://{ip   }:{ }/health?password={ SDK} 

通过浏览器打开此链接时,将显示一条消息,指出所使用的证书不安全,您必须按照浏览器的说明进行操作。

对于特定示例,在响应正文中,我们得到以下信息:

 { "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents. 

字符{to the character}的输出的第一部分与文档相对应,并且是与文档相对应的标准化JSON格式输出,然后有一个不符合标准的输出说明。

以前,为了在Zabbix监视系统中使用此输出,您必须编写自己的脚本,该脚本将在代理上使用并获取必要的数据。 使用这种方法,您要么需要存储响应文件并监视其相关性,要么需要分别请求每个元素,即 使用11个查询而不是1。

在Zabbix 4.0版本中,出现了一个代理数据元素类型,该类型允许通过http和https协议接收数据并对其进行处理,以及从主要元素计算出的从属元素。

这个想法是使服务器响应进入文本数据元素,然后从中选择必要的数据元素。

最初,我们将为端口号和密码定义宏,以实现模板的多功能性和安全性。

我们创建一个模板,并添加一个类型为“ HTTP代理”,所需密钥,URL https:// {HOST.IP}:{$ TRASSIR_SDK_PORT} / health和密码请求字段{$ TRASSIR_SDK_PASS}的数据元素。 这里的{HOST.IP}是一个宏,当将模板添加到主机时,它将被转换为主机IP地址。

正如我们先前通过实验发现的那样,该请求并不完全符合JSON格式,因此无法从中提取数据。

我们将使用新的Zabbix功能,并在数据元素模板的“预处理”选项卡中添加正则表达式\ {(\ n |。)* \},并带有输出\ 0,该输出仅返回JSON格式的数据。

谁在乎为什么会这样
可视化编辑器中为初学者开发这样的表达方式要容易得多。 在此表达式中,我们正在寻找花括号大括号的特定字符,并且由于在正则表达式中使用了这些括号,因此必须在该字符之前指定一个反斜杠。 JSON数据以及换行符中可以有任何字符(实际上没有,但现在我们省略)。 这些指示句点或换行控制字符\ n的字符选项在括号中用竖线表示。 方括号后面是一个星号,表示找到的字符或换行符可以重复无数次。 接下来是右括号。 输出\ 0表示将显示所有找到的序列。

接下来,创建一个从属数据元素,为其指示主数据元素先前以JSON格式接收的响应,并通过“ JSON路径”步骤指示预处理,该步骤允许您通过指定JSON路径访问任何数据元素。 在我们的示例中,所有数据都位于顶层,因此我们为所有元素指定$ .disks等。

仅剩下创建触发器来检查新数据,它们是否进入正常范围以及可选图形的触发器。

事实证明,我们非常方便快捷地通过Zabbix的常规方法从外部系统接收数据,该外部系统的输出不完全符合该标准。 缺少外部脚本可简化对监视系统的了解,并简化维护工作。

指定的模板在share.zabbix.com交换门户上可用

Source: https://habr.com/ru/post/zh-CN430534/


All Articles