7 可计算监控项

概述

计算项允许基于某些现有项的值创建计算。例如,您可能想要计算某些项值的每小时平均值或计算一组项的总值。这就是计算项的用途。

计算可能同时使用:

  • 单个项的单个值
  • 用于选择多个项进行聚合的复杂过滤器(有关详细信息,请参阅 聚合计算

计算项是创建虚拟数据源的一种方式。所有计算都仅由 Zabbix 服务器完成。根据使用的算术表达式定期计算值。

结果数据与任何其他项一样存储在 Zabbix 数据库中;历史值和趋势值均已存储,并且可以生成图表。

如果计算结果为浮点值,则如果计算项信息类型为 数字(无符号),则它将被修剪为整数。

此外,如果缓存中没有最近的数据,并且函数中没有定义的查询期,则 Zabbix 将默认回溯到过去一周的时间以查询数据库的历史值。

计算项与触发器 表达式 共享其语法。计算项中允许与字符串进行比较。计算项可能被 宏或其他实体引用,就像任何其他项类型一样。

要使用计算项,请选择项类型计算

可配置字段

是一个唯一的监控项标识符(按主机)。您可以使用支持的符号创建任何 键名。

计算定义应在公式字段中输入。公式与键之间 没有连接。键参数 在公式中没有任何方式使用。

简单公式的语法是:

function(/host/key,<parameter1>,<parameter2>,...)

其中:

function supported functions之一:last, min, max, avg, count, 等
host 用于计算的监控项的主机。
可以省略当前主机(即如在 function(//key,parameter,...))。
key 用于计算的监控项的键。
parameter(s) 如果需要,函数的参数。
支持Time suffixesmemory size suffixes

在公式中使用的User macros 将被扩展,如果用于引用函数 参数,监控项过滤参数,或一个常量。用户宏将 在引用函数、主机名、监控项键、 监控项键参数或运算符时,不会被扩展。

更复杂的公式可能使用函数、运算符和 括号的组合。您可以使用所有在触发器表达式中支持的函数和operators。逻辑和运算符 优先级完全相同。

与触发器表达式不同,Zabbix根据 监控项更新间隔处理计算的监控项,而不是在接收到新值时。

所有在计算 监控项公式中引用的历史函数的监控项必须存在并收集数据。此外,如果您更改了 监控项键的引用监控项,您必须手动更新任何使用该键的公式。

在几种情况下,计算的监控项可能变得不受支持:

  • 引用的监控项(s)
    • 未找到
    • 已禁用
    • 属于已禁用的主机
    • 不受支持(除了nodata()函数和 operators与 未知值)
  • 没有数据来计算函数
  • 除以零
  • 使用了不正确的语法

用法示例

示例 1

计算 '/'上可用磁盘空间的百分比。

使用函数 last:

100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])

Zabbix 将获取可用和总磁盘空间的最新值,并根据给定的公式计算百分比。

示例 2

计算 Zabbix 处理的值的 10 分钟平均值。

使用函数 avg:

avg(/Zabbix Server/zabbix[wcache,values],10m)

请注意,可计算监控项选取长时间段的数据会影响 Zabbix 服务器的性能。

示例 3

计算 eth0 上的总带宽。

两个函数之和:

last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])

示例 4

计算入站流量的百分比

更为复杂的表达式:

100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))

另请参阅: 聚合计算示例