在监控系统中,我们不仅需要系统收集监控项的数据,还要求当监控项的数据不正常时系统能够为我们提供告警。触发器就是用于定义监控项的阈值,当监控项的值超过阈值是将触发。基于触发器可以创建一个动作,在触发器被触发时执行相应的动作,如发邮件告警。
1、触发器的配置
触发器是基于某一个特定监控项的。在模板中点击触发器链接可以查看当前模板中使用的触发器。这里查看模板Template OS Linux中的触发器:
在这个页面中可以修改当前使用的触发器,也可以点击“创建触发器”按钮创建触发器。创建触发器的页面如下:
- 名称:自定义的触发器名称
- 严重性:触发器被触发时发出的警告等级
- 表达式:触发器中最重要的配置,通过表达式设置监控项的阈值
点击表达式栏旁边的“添加”按钮,会弹出表达式构造页面:
- 监控项:该触发器基于哪个监控项创建
- 功能:表达式中使用的函数,定义如何判断监控项的值
- 最后一个:根据不同的功能项有不同的含义,比如选择最后几次值中的某一个值
- 间隔:时间间隔
- 结果:监控项的值与这里设置的值进行比较得出的真假结果
2、触发器表达式中常用的函数
2.1、avg()
用于返回一段时间的平均值。
- 参数:时间或#n
- 支持的类型:float,int
如果仅有一个参数,表示从当前时间开始的指定时间内的平均值;如果有第二个参数,第二个参数表示偏移量,从第二个参数前开始计算时间;#n表示最近n次的值;时间支持单位,默认为秒
e.g:
avg(5) # 最后5秒的平均值 avg(#5) # 最近5次值的平均值 avg(3600,86400) # 一天前的一个小时的平均值
2.2、last()
最近的值。
- 参数:#n
- 支持的类型:float,int,str,text,log
#n表示最近的第n个值;last(0)等价于last(#1);该函数必须包含参数
2.3、max()
返回指定时间间隔的最大值。
- 参数:时间或#n
- 支持的类型:float,int
#n表示最后n个值的最大值
e.g:
max(600) # 600秒之内的最大值 max(#5) # 最后5个值的最大值
2.4、min()
返回指定时间间隔的最小值。
- 参数:时间或#n
- 支持的类型:float,int
该函数的使用同max()
2.5、count()
返回指定时间间隔内的数值的统计。
- 参数:时间或#n
- 支持的类型:float,int,str,text,log
可带两个参数,第一个参数指定时间段,第二个参数指定样本数据
e.g:
count(600) # 最近600秒得到值的个数 count(600,12) # 最近600秒得到值的个数等于12
2.6、sum()
返回指定时间间隔中收集到的值的总和。
- 参数:时间或#n
- 支持的类型:float,int
e.g:
sum(600) # 600秒内接受到的所有值的和 sum(#5) # 最后5个值的和
2.7、change()
返回最近获得的值与上一个值的差值,对于字符串0表示相同,1表示不同。
- 参数:无(无参数时用0表示)
- 支持的类型:float,int,str,text,log
e.g:
change(0)>n # 最近得到的值与上一个值的差值大于n
2.8、diff()
检测是否发生变化。
- 参数:无
- 支持的类型:float、int、str、text、log
返回值为1表示发生变化,0表示无变化