这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

7 可计算监控项

概述

使用可计算监控项,可以根据其它监控项的值计算。

计算可以同时使用:

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

因此,可计算监控项是创建虚拟数据源的一种方式。所有计算仅由 Zabbix server 完成。这些值是根据所使用的算术表达式定期计算的。

结果数据与任何其它监控项一样存储在 Zabbix 数据库中;历史和趋势值都被存储并且可以生成图形。

如果计算结果是浮点值,如果计算的信息项类型为Numeric (unsigned),则将其修剪为整数。

可计算监控项与触发器表达式共享它们的语法。在可计算监控项中允许与字符串进行比较。可计算监控项可以由宏或与任何其它项类型相同的其它实体引用。

要使用可计算监控项,请选择项目类型 Calculated

可配置字段

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

应在 公式 字段中输入计算定义。公式和密钥之间几乎没有任何联系。公式中不以任何方式使用关键参数。

一个简单公式的语法是:

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

这里:

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

如果用于引用函数参数或常量,公式中的用户宏将被扩展,如果引用函数、主机名、监控项键、监控项键参数或运算符,则不会扩展用户宏。

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

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

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

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

  • 引用的监控项
    • 没有找到
    • 被禁用
    • 属于禁用的主机
    • 不支持 (除了 nodata() 函数和具有未知值的 运算符)
  • 没有数据来计算函数
  • 被0除
  • 使用了不正确的语法

用法示例

示例 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]))

另请参阅: 聚合计算示例