基于Zabbix 3.2.6版本的low-level-discover(lld)

个人使用理解:
     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编程。
posted @ 2017-06-25 17:43  普朗克·李  阅读(1187)  评论(0编辑  收藏  举报