触发器(trigger)
① 简介
当我们的采集的值定义完了以后,就可以来定义触发器了。 我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。 逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下:
OK
(不符合条件):正常状态 --> 较老的zabbix版本,其为FALSE;PROBLEM
(符合条件):非正常状态 --> 较老的zabbix版本,其为TRUE; 一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
最近N分钟所得结果的平均值
最近N次所得结果的平均值
而且,我们的触发器存在可调用的函数:
nodata() #是否采集到数据,采集不到则为异常 last() #最近几次的平均值 date() time() now() dayofmonth() ...
注:能用数值保存的就不要使用字符串
② 触发器表达式
基本的触发器表达式格式如下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>
-
server
:主机名称; -
key
:主机上关系的相应监控项的key; -
function
:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行; -
目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
-
parameter
:函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和; -
此外,avg、count、last、min和max还支持使用第二个参数,用于完 成时间限定;例如,max(1h,7d)将返回一周之前的最大值; 表达式所支持的运算符及其功能如下图所示:
③ 定义一个触发器
我们可以查看一下rate of packets(in)
的值,并以其为标准确定我们的非正常的值:
图中我们可以看出,我们的最大值为36,最小值为23,平均值为30。这样的话,我们可以定义50以上的都是非正常的值,这里为了测试定义为30。 下面我们来定义一个触发器: 进入:配置 ---> 主机 ---> node1 ---> 触发器 ---> 创建触发器
我们的表达式可以直接点击右侧的添加,然后定义自己所需的内容,即可自动生成:
生成完毕后,我们就点击页面下方的添加,即成功定义了一个触发器,同时页面自动跳转:
然后我们去看一下我们刚刚定义了触发器的那个监控项:
我们可以看出,这个里面就有了一根线,就是我们刚刚定义的值,超过线的即为异常状