个人使用理解:
1、使用一个返回值是JSON的KEY,在Templates或者Hosts中创建一个Discovery规则。该key的返回值类似于: 索引key -- value 类型
例如zabbix自带的net.if.discovery,返回值为:{"data":[{"{#IFNAME}":"lo"},{"{#IFNAME}":"eth18"},{"{#IFNAME}":"eth16"},{"{#IFNAME}":"eth19"},{"{#IFNAME}":"eth17"}]}
该key共检测到五个网络接口,第一个IFNAME为lo,第二个IFNAME为eth18
2、根据JSON返回的KEY值,创建我们需要的正则表达式,过滤出我们需要的值。(上例中我们不需要监控“lo”的流量,监控其他物理接口的流量,那么无论我们的目标主机上共有多少个物理接口,我们使用lld规则,只需要建立一条规则就能将所有的物理接口的流量进行监控,在加上模板的应用简化工作量)
具体实现步骤:
1、根据不同需求创建正则表达式,此处我们使用系统自带的Network interfaces for discovery
创建完成后,可在Test中检查是否正确,正则中仅插件value不检查索引 key。"{#IFNAME}":"lo" ,仅处理lo字符串,不处理其他
eth0检查结果:
lo检测结果:
2、在Templates或者Hosts中创建一个Discovery规则
创建discovery rule需要两步,第一步定义可返回JSON值的KEY,第二步设置正则表达式
net.if.discovery :返回JSON值的KEY
Macro:填写返回值的索引key
Regular expression: 使用“@”+第一步创建的正则表达式名称
3、为Discovery规则创建监控项,触发器、图形等
注意第二步创建的lld规则使用的key并不是我们需要监控item,我们需要的使用该key返回的值自动的创建我们需要的新item
以item为例:使用keynet.if.in监控网络接口传入流量
在为lld创建item时,我们的key传入的参数使用我们lld传回给server的所以key即可完成创建
lld监控效果:
我们将拥有lld的模板custom_1链接至我们的主机观察lld监控结果:
我们能够看到使用lld创建了一个item,但是我们的lld规则给我们的lld的item传递了四个符合正则表达式的[#IFNAME]的值,那么将该lld规则应用到主机上之后,我们就能实现监控所有物流网口流量的需求。
返回JSON格式的KEY我们也可以自定义来完全满足我们的监控需求,不过需要会JSON编程。