Zabbix–基础–4.3–进阶–低级别自动发现
1、介绍
1.1、低级别自动发现–配置
自动发现规则-->监控项原型-->触发器原型
监控项原型:生成真正监控项的模板
触发器原型:生成真正触发器的模板
1.2、自动发现规则
自动发现规则:最重要的一项,指定了用于获取自动发现的数据的内置监控项或自定义脚本
预处理:对发现的数据进行预处理
LLD 宏:提取已发现的监控项、触发器等监控指标上配置的宏的取值。
过滤:过滤发现的值
覆盖:修改发现对象的监控项、触发器、图表和主机的原型
1.3、官方文档
https://www.zabbix.com/documentation/6.0/zh/manual/discovery/low_level_discovery#%E8%87%AA%E5%8A%A8%E5%8F%91%E7%8E%B0%E8%A7%84%E5%88%99
2、案例
监控cpu,内存,每台主机都是一样的。但是像文件系统、网络接口,会因为每台主机的不同而不同。比如,A主机上面有C、D、E盘,2个网口,B主机有C、D2个盘,1个网口。这个时候,low-level discovery(低级别自动发现)就派上用场。
低级别自动发现可以自动为主机上的不同实体创建监控项、触发器和图表。比如, Zabbix可以自动监控文件系统和网络接口,并且不需要为其手工创建监控项。
2.1、配置自动发现规则
“配置” --> “主机/模板” --> “自动发现”
2.1.1、自动发现规则
文件系统自动发现
vfs.fs.discovery
点上面中的"测试",返回json格式结果
注意:{#FSNAME},{#FSTYPE},会被当作LLD宏引用
[
{
"{#FSNAME}": "/sys",
"{#FSTYPE}": "sysfs"
},
{
"{#FSNAME}": "/proc",
"{#FSTYPE}": "proc"
},
{
"{#FSNAME}": "/dev",
"{#FSTYPE}": "devtmpfs"
},
{
"{#FSNAME}": "/sys/kernel/security",
"{#FSTYPE}": "securityfs"
},
{
"{#FSNAME}": "/dev/shm",
"{#FSTYPE}": "tmpfs"
},
{
"{#FSNAME}": "/dev/pts",
"{#FSTYPE}": "devpts"
},
{
"{#FSNAME}": "/run",
"{#FSTYPE}": "tmpfs"
},
{
"{#FSNAME}": "/sys/fs/cgroup",
"{#FSTYPE}": "tmpfs"
},
{
"{#FSNAME}": "/sys/fs/cgroup/systemd",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/pstore",
"{#FSTYPE}": "pstore"
},
{
"{#FSNAME}": "/sys/fs/cgroup/blkio",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/devices",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/cpu,cpuacct",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/hugetlb",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/perf_event",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/memory",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/freezer",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/cpuset",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/pids",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/fs/cgroup/net_cls,net_prio",
"{#FSTYPE}": "cgroup"
},
{
"{#FSNAME}": "/sys/kernel/config",
"{#FSTYPE}": "configfs"
},
{
"{#FSNAME}": "/",
"{#FSTYPE}": "xfs"
},
{
"{#FSNAME}": "/sys/fs/selinux",
"{#FSTYPE}": "selinuxfs"
},
{
"{#FSNAME}": "/proc/sys/fs/binfmt_misc",
"{#FSTYPE}": "autofs"
},
{
"{#FSNAME}": "/sys/kernel/debug",
"{#FSTYPE}": "debugfs"
},
{
"{#FSNAME}": "/dev/hugepages",
"{#FSTYPE}": "hugetlbfs"
},
{
"{#FSNAME}": "/dev/mqueue",
"{#FSTYPE}": "mqueue"
},
{
"{#FSNAME}": "/sys/fs/fuse/connections",
"{#FSTYPE}": "fusectl"
},
{
"{#FSNAME}": "/boot",
"{#FSTYPE}": "xfs"
},
{
"{#FSNAME}": "/run/user/0",
"{#FSTYPE}": "tmpfs"
},
{
"{#FSNAME}": "/proc/sys/fs/binfmt_misc",
"{#FSTYPE}": "binfmt_misc"
}
]
2.1.2、预处理
含义与上一小节一样
Zabbix--基础--4.2--进阶--预处理
我这里没有配置
2.1.3、LLD宏
假设前面获取的数据如下所示:
[
{
"fsname": "/sys",
"fstype": "sysfs"
}
]
就进行对应设置
{#FSNAME} $.fsname
{#FSTYPE} $.fstype
但是我们这里的数据本身就是这样,所以没必要配置
[
{
"{#FSNAME}": "/sys/fs/cgroup/memory",
"{#FSTYPE}": "cgroup"
}
]
2.1.4、过滤器
过滤掉一些值,比如上面只需要文件类型
{#FSNAME} 不匹配 ^(/dev|/sys|/run|/proc|.+/shm)$
{#FSTYPE} 匹配 @File systems for discovery
# 注意:@File systems for discovery 是全局正则表达式,系统内置的
2.1.5、覆盖
覆盖 - 修改发现对象的监控项、触发器、图表和主机的原型
比如:/tmp已使用大小,没有超过50%,不添加监控项
/tmp已使用大小,没有超过50%,不添加监控项
{#FSNAME}
^\/tmp$
Disk space is low(used > 50%)
2.2、配置监控项原型
2.2.1、{#FSNAME} 空闲百分比
{#FSNAME} 空闲百分比
vfs.fs.size[{#FSNAME},pfree]
测试
2.2.2、{#FSNAME} 已使用百分比
{#FSNAME} 已使用百分比
vfs.fs.size[{#FSNAME},pused]
2.2.3、{#FSNAME} 总大小
{#FSNAME} 总大小
vfs.fs.size[{#FSNAME},total]
2.2.4、{#FSNAME} 已使用大小
{#FSNAME} 已使用大小
vfs.fs.size[{#FSNAME},used]
2.3、配置触发器原型
2.3.1、创建触发器原型
{#FSNAME}: 磁盘分区空间使用百分比>90
last(/192.168.187.12_zabbix02/vfs.fs.size[{#FSNAME},pused])>90