青蛙学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

宏变量的优先级

以下优先级由高到低排列:

  • 主机级别的宏变量
  • 第一级模板中的宏变量
  • 第二级模板中的宏变量
  • 全局级别的宏变量
Zabbix查找宏的顺序为:首选查找主机级别的宏,如果在主机级别不存在宏设置,那么Zabbix就会去模板中看是否设置有宏。如果模板中也没有,将会查找使用全局的宏。若是在各级别都没找到宏,将不使用宏

2、配置LLD

这里通过查看监控模板Template OS Linux中的自动发现规则来介绍LLD的配置。

LLD在监控模板中进行配置,登录Zabbix Web后点击配置—模板,然后找到Template OS Linux项并点击链接进入如下页面:

1

点击红框处的自动发现规则,即进入LLD的配置:

2

这里可以看到Template OS Linux模板自带了两个LLD,分别为文件系统的LLD和网络接口的LLD。这里查看网络接口的LLD,即Network interface discovery,点击红框处的链接,进入自动发现规则配置页:

3

  • 名称:自定义的自动发现规则名称
  • 类型:该规则的数据从何处获取
  • 键值:通过哪个键值获取数据,这里获取的是网络接口的数据,使用的是Zabbix内置的LLD key
  • 更新间隔:间隔多少时间从Zabbix Agent获取一次数据

由于通过net.if.discovery获取到的数据非常多,所以这里必须对获取到的数据进行过滤,此时就需要使用到“过滤器”中的功能了,点击“过滤器”进入以下页面:

4

这里对宏变量{#IFNAME}进行了正则表达式的过滤,正则表达式为已经定义好的名为Network interfaces for discovery的规则,规则通过@引用进来。至此,一个LLD规则配置完成,之后可以基于这个LLD规则配置监控项、触发器、图形等。

3、Zabbix正则表达式规则统一设置

在Zabbix中,可以对一些常用的正则表达式进行统一设置,以方便在使用时进行引用。比如在上面配置LLD时就引用了一个正则表达式规则。

点击管理—一般,进入以下界面:

5

在标记为③的红框处下拉选择“正则表达式”,进入以下界面:

6

点击“新的正则表达式”即可创建正则表达式规则。

猜你喜欢

转载自www.cnblogs.com/yu2006070-01/p/10354741.html