7 计算监控项
概述
你可以基于其它监控项创建计算监控项。
因此,计算监控项是创建虚拟数据源的一种方式。这些值将根据算术表达式定期计算。所有计算都由Zabbix服务器完成,与Zabbix代理或代理服务器执行的计算无关。
生成的数据将存储在Zabbix数据库中,与其它任何监控项一样 - 这意味着存储历史和趋势值,以便快速生成图表。 计算的监控项可用于触发器表达式,由宏或其它实体引用,与任何其它监控项类型相同。
要使用计算监控项,请选择监控项类型 Calculated。
可配置字段
key是唯一的监控项标识符(每个主机)。你可以使用支持的符号创建任何Key名称。
计算定义应在Formula字段中输入。公式和密钥之间几乎没有连接。Key参数不能以任何方式用于公式中。
一个简单公式的正确语法是:
- func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
当:
参数 | 定义 |
---|---|
func | 触发器表达式支持的functions:last、min、max、avg、count等 |
key | 其数据要使用的另一个监控项的密钥。它可以被定义为key或hostname:key。注意: 将整个Key放在双引号(“…”)中,强烈建议避免由于Key内的空格或逗号而导致错误的解析。如果Key中也有引用的参数,则必须使用反斜杠(\)来转义这些双引号。 参考下面的 示例5 |
parameter(s) | 功能参数(如果需要)。 |
从计算监控项公式引用的所有监控项都必须存在并且正在收集数据(功能和不支持的监控项除外)。另外,如果更改引用监控项的Key,则必须使用该Key手动更新任一公式。
如果用于引用函数参数或常量,公式中的用户宏将被扩展。如果引用函数、主机名、监控项Key、监控项key参数或运算符,则用户宏将不会被扩展。
更复杂的公式可以使用函数,运算符和括号的组合。你可以使用触发器表达式支持的所有功能和operators 。请注意,语法略有不同,但逻辑和运算符优先级完全相同。
与触发器表达式不同,Zabbix根据监控项更新间隔处理计算监控项,而不是在接收到新值时处理。
如果计算结果为浮点值,且如果计算的信息类型为Numeric(无符号),则该值将被修剪为整数。
在几种情况下,计算监控项可能不受支持:
参考监控项
没有找到
被禁止了
属于一个被禁止的主机
不支持(查阅例外情况 功能和不受支持的监控项, 具有不支持的监控项和未知值的表达式 和 操作)
没有数据来计算一个函数
被零除
使用不正确的语法
在Zabbix 1.8.1中引入了对计算监控项的支持。从Zabbix3.2开始,计算监控项在某些情况下可能涉及不符合要求的项目,如这些所述 功能和不受支持的监控项, 具有不支持的监控项和未知值的表达式 和 操作.
用法示例
示例 1
计算'/'上可用磁盘空间的百分比。
使用last功能:
- 100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")
Zabbix将获取最新的空闲和总磁盘空间值,并根据给定的公式计算百分比。
示例 2
计算Zabbix处理的数值的10分钟平均值。
使用avg功能:
- avg("Zabbix Server:zabbix[wcache,values]",600)
请注意,大量使用长时间计算的监控项可能会影响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]"))
示例 5
在计算监控项中正确使用聚合。
记下双引号在引号键内如何转义:
- last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\"]")