已挂载文件系统的发现
概述
可以发现已挂载文件系统及其属性:
- 挂载点名称
- 文件系统类型
- 文件系统大小
- inode 统计信息
- 挂载选项
为此,可以组合使用:
vfs.fs.getagent 监控项作为主监控项- 依赖的低级别发现规则和监控项原型
在 full 模式(默认)下,仅当 Zabbix agent 用户对挂载点路径中的每个目录都具有遍历权限时,才会返回文件系统统计信息;否则,受影响的文件系统将从 vfs.fs.get 输出中省略。
若要发现这些文件系统,并将其报告为不受支持,而不是静默跳过,请使用短模式发现。
配置
主监控项
使用以下 key 创建一个 Zabbix agent 监控项:
vfs.fs.get

对于可能较大的 JSON 数据,请将信息类型设置为“文本”。
此监控项返回的数据对于已挂载的文件系统将包含类似如下内容:
[
{
"fsname": "/",
"fstype": "ext4",
"bytes": {
"total": 249405239296,
"free": 24069537792,
"used": 212595294208,
"pfree": 10.170306,
"pused": 89.829694
},
"inodes": {
"total": 15532032,
"free": 12656665,
"used": 2875367,
"pfree": 81.487503,
"pused": 18.512497
},
"options": "rw,noatime,errors=remount-ro"
}
]
依赖型 LLD 规则
创建一个低级别发现规则,类型为 Dependent item:

将我们创建的 vfs.fs.get 监控项选为主监控项。
在 LLD macros 选项卡中,定义带有相应 JSONPath 的自定义宏:

在 Filters 选项卡中,您可以添加一个正则表达式,仅筛选 可读写 文件系统:

依赖监控项原型
在此 LLD 规则中创建一个类型为“依赖监控项”的监控项原型。
将我们创建的 vfs.fs.get 监控项选为此原型的主监控项。

请注意在监控项原型名称和键值中使用自定义宏:
- Name: Free disk space on {#FSNAME}, type: {#FSTYPE}
- Key: Free[{#FSNAME}]
信息类型请使用:
- Numeric (unsigned):用于 'free'、'total'、'used' 等指标
- Numeric (float):用于 'pfree'、'pused'(百分比)等指标
在监控项原型的 Preprocessing 选项卡中选择 JSONPath,并将以下 JSONPath 表达式作为参数使用:
$.[?(@.fsname=='{#FSNAME}')].bytes.free.first()

当发现开始时,将为每个挂载点创建一个监控项。
此监控项将返回给定挂载点的可用字节数。
短模式下的发现
作为依赖发现规则的替代方案,您可以创建一个类型为 Zabbix agent 的发现规则,并使用以下键值:
vfs.fs.get[short]
在 short 模式下,监控项返回已挂载文件系统的列表,但不包含磁盘空间和 inode 统计信息,例如:
[
{
"fsname": "/",
"fstype": "ext4",
"options": "rw,noatime,errors=remount-ro"
},
{
"fsname": "/home",
"fstype": "xfs",
"options": "rw,relatime,attr2,inode64,noquota"
}
]
由于 agent 不会查询文件系统本身,因此发现过程不会触发自动挂载,也不会因无响应的网络文件系统而延迟。 发现频率也可以低于数据采集频率,例如每小时执行一次。
在 LLD macros 选项卡中,使用相应的 JSONPath 定义自定义宏,例如,{#FSNAME} - $.fsname 和 {#FSTYPE} - $.fstype。
然后创建一个类型为 Zabbix agent 的监控项原型,用于返回某个已发现文件系统的统计信息:
- Key:
vfs.fs.get[full,{#FSNAME}] - Type of information: Text
- Preprocessing: JSONPath
$[0]
将此监控项原型用作依赖监控项原型的主监控项,例如,使用 JSONPath $.bytes.free 获取可用字节数。
如果 agent 无法获取某个已发现文件系统的统计信息(例如,由于缺少权限),vfs.fs.get[full,{#FSNAME}] 将返回空数组,$[0] 预处理步骤将失败,并且该监控项将变为不受支持状态。因此,问题会显示出来,而不是静默跳过该文件系统。
请注意,此配置会为每个已发现的文件系统执行单独的 agent 检查。
Zabbix 随附的 OS 模板使用了此方法,并且要求使用 Zabbix agent 8.0 或更高版本。