监控项原型的应用场景
在日常监控系统中,自动发现功能能够动态识别网络设备的各种指标。例如温度传感器和磁盘空间,通常会产生多个监控项实例。这种情况下,需要通过聚合计算提取关键数据。
温度监控的最大值计算
对于温度监控项原型 sensor.temp.value[{#SNMPINDEX}],每个被发现的传感器会生成独立监控项。要获取所有传感器的最高温度值,使用 Zabbix 的聚合函数:
max(//sensor.temp.value[*])
该表达式会扫描所有匹配 sensor.temp.value 的监控项,返回其中的最大值。星号 * 作为通配符匹配所有实例,适用于自动发现产生的动态监控项。
磁盘总量的聚合计算
磁盘监控原型 vfs.fs.dependent.size[{#FSNAME},total] 会为每个文件系统创建独立监控项。计算所有磁盘的总容量需要特殊处理:
sum(last_foreach(//vfs.fs.dependent.size[*,total]))
last_foreach 函数获取每个匹配监控项的最新值,sum 对这些值求和。这种组合方式确保即使磁盘数量变化,也能正确计算总容量。
实现注意事项
监控项原型中的 {#SNMPINDEX} 和 {#FSNAME} 是自动发现的宏变量,分别代表设备索引和文件系统名称。聚合计算时使用通配符 * 替代这些变量,可以匹配所有自动发现的实例。
对于时间序列数据,last_foreach 确保只使用每个监控项的最新数据点,避免历史数据干扰当前统计。这在计算实时总量时尤为重要。