9.5 监控项自动发现功能
9.5.1 功能概述
在Zabbix中,由于监控指标都是基于模板进行的,因此会存在模板的通用性问题。比如OS层面的监控,一台服务器具有多块网卡、多个分区、多块磁盘、多个进程端口等需要监控,因为Zabbix提供了LLD(Low Level Discovery)功能,可以实现一个监控项原型生成多个监控项的场景。
9.5.2 LLD的原理LLD的原理示意图如图9-11所示。步骤如下:
(1)采集到的数据是一个JSON格式的字符串,且其中存在宏变量。
(2)将Item原型内的宏变量替换为实际的数值。
(3)生成具有实际数值的Item。
(4)针对生成后的Item, Zabbix会根据采集协议定期采集监控值的数据。
9.5.3 LLD的数据格式
在Zabbix自带的LLD功能中,默认可以对网卡、文件系统、SNMP OID、CPU、Windows服务进行自动发现。
对于其他不支持的服务,提供自定义功能。在Zabbix中LLD的数据返回值是JSON格式的
,自带的key如下所示。vfs.fs.discovery,支持Zabbix-Agent:
net.if.discovery,支持Zabbix-Agent:
discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …, ],支持SNMPv1/v2 /v3:
system.cpu.discovery:
db.odbc.discovery[<description>, <dsn>],支持ODBC(Server):
service.discovery是Windows中自动发现服务的key,内置的一些宏功能如表9-3所示。
表9-3 内置的宏功能
custom.discovery,自定义的key,遵循JSON数据格式:
使用Zabbix-Get来查看key获取到的数据。下面在安装有zabbix_agentd的Linux服务器中进行key的测试。测试net.if.discovery,数据如下:
测试vfs.fs.discovery,数据如下:
对于SNMP,如图9-12所示的key,不能通过Zabbix-Get来验证,因为zabbix_get只能获取到zabbix_agentd的数据,只能在Web页面中进行配置,而没法通过其他客户端进行测试。