青蛙学Linux—Zabbix Web使用之Zabbix发现功能③低级别发现
Zabbix的低级别发现(LLD)适用于监控多实例、变化的数据,LLD提供了一种在计算机上为不同实体自动创建监控项、触发器和图形的方法。例如:不同主机的网卡数量、网卡名称均不相同,使用LLD可以使我们不用为每台主机的每一块网卡单独创建一个监控项,而只要创建一个监控项即可。
通过LLD的key获取到的返回值为JSON格式数据。
Zabbix中自带了对以下几种类型的LLD:
- 文件系统发现
- 网络接口发现
- CPU核和状态的发现
- SNMP OID发现
- ODBC SQL查询的发现
- Windows服务发现
1、Zabbix LLD常用key及宏变量的概念
常用的Zabbix自带LLD key有以下几个:
vfs.fs.discovery # 文件系统的LLD,适用Zabbix Agent监控 snmp.discovery # SNMP的LLD,适用SNMP监控 net.if.discovery # 网络接口的LLD,适用Zabbix Agent监控 system.cpu.discovery # CPU的LLD,适用Zabbix Agent监控
通过LLD key从被监控主机返回的是一个JSON格式的数据,这里在主机A上使用zabbix_get从主机B上得到net.if.discovery的返回值:
[root@localhost bin]# ./zabbix_get -s 192.168.0.88 -k net.if.discovery {"data":[{"{#IFNAME}":"lo"},{"{#IFNAME}":"ens160"}]}
其中,{#IFNAME}就是一个宏变量,会返回系统中所有网卡的名称。宏变量可以定义在主机、模板和全局中;宏变量都是大写的;Zabbix内置的宏变量使用#开头;用户可以自定义宏变量,自定义的宏变量使用$开头。
Zabbix常用的内置宏变量有以下几个:
{#FSNAME} # 文件系统名称 {#FSTYPE} # 文件系统类型 {#IFNAME} # 网卡名称 {#SNMPINDEX} # SNMP OID {#SNMPVALUE} # SNMP OID
宏变量的优先级
以下优先级由高到低排列:
- 主机级别的宏变量
- 第一级模板中的宏变量
- 第二级模板中的宏变量
- 全局级别的宏变量
2、配置LLD
这里通过查看监控模板Template OS Linux中的自动发现规则来介绍LLD的配置。
LLD在监控模板中进行配置,登录Zabbix Web后点击配置—模板,然后找到Template OS Linux项并点击链接进入如下页面:
点击红框处的自动发现规则,即进入LLD的配置:
这里可以看到Template OS Linux模板自带了两个LLD,分别为文件系统的LLD和网络接口的LLD。这里查看网络接口的LLD,即Network interface discovery,点击红框处的链接,进入自动发现规则配置页:
- 名称:自定义的自动发现规则名称
- 类型:该规则的数据从何处获取
- 键值:通过哪个键值获取数据,这里获取的是网络接口的数据,使用的是Zabbix内置的LLD key
- 更新间隔:间隔多少时间从Zabbix Agent获取一次数据
由于通过net.if.discovery获取到的数据非常多,所以这里必须对获取到的数据进行过滤,此时就需要使用到“过滤器”中的功能了,点击“过滤器”进入以下页面:
这里对宏变量{#IFNAME}进行了正则表达式的过滤,正则表达式为已经定义好的名为Network interfaces for discovery的规则,规则通过@引用进来。至此,一个LLD规则配置完成,之后可以基于这个LLD规则配置监控项、触发器、图形等。
3、Zabbix正则表达式规则统一设置
在Zabbix中,可以对一些常用的正则表达式进行统一设置,以方便在使用时进行引用。比如在上面配置LLD时就引用了一个正则表达式规则。
点击管理—一般,进入以下界面:
在标记为③的红框处下拉选择“正则表达式”,进入以下界面:
点击“新的正则表达式”即可创建正则表达式规则。