zabbix触发器表达式
1、格式:
{
{主机:key.函数(参数)} + 表达式运算符 + 常数
例如:{sms_status:SMSMTupdate.status.last()}<>0
2、触发器函数function:
触发器function函数可以引用检索到的值,当前时间或其他元素。
3、函数参数
大多数数字型的函数接受秒数来作为参数。
你可以使用前缀#来指定参数具有不同的含义:
函数内容 含义
sum(600) 600秒内所有值的总和
sum(#5) 最后5个值得总和
last函数使用不同的参数将会得到不同的值,#2表示倒数第二新的数据。例入从老到最新值为1,2,3,4,5,6,7,8,9,10,last(#2)得到的值为9, last(#9)得到的值为2。
avg,count,last,min和max函数还支持额外的第二个参数,以秒为单位的参数time_shift(时间偏移量),这个参数允许从过去一段时间内引用数据。例如avg(1h,1d),将会获取到昨天的1小时内的平均数据。
注意:
触发器需要使用 history 历史数据来计算。如果历史数据不可用(特别是关于 time_shift时间偏移量),则无法使用趋势信息,因此必须至少保持触发器函数所预期这段时间的历史信息。
你可以在触发器表达式中使用支持的单位符号。例如 "5m" (分钟)可以被 "300" 秒 代替,“1d”(天)可以被"86400" 秒代替。"1k" 代表 "1024" bytes。
2.3 运算符
触发器支持的运算符(在执行中优先级递减)
优先级 运算符 定义
1 not 逻辑非
2 * 乘
/ 相除
3 + 相加
- 相减
4 < 小于。该运算符定义:
A (A<=B-0.000001)
<= 小于等于
> 大于。该运算符定义:
A>B <=> (A>=B+0.000001)
>= 大于等于
5 = 相等。该算符定义:
A=B <=> (A>B-0.000001) and (A
<> 不等于
6 and 逻辑与
7 or 逻辑或
not,and 和 or 运算符区分大小写,而且必须为小写。
not举例:
如果3306端口侦听值小于等于0,则触发报警:数据库服务挂了
and 举例:
如果3306端口和8080端口侦听值都等于0,则触发报警:数据库和jenkins服务都挂了
or 举例:
如果3306端口侦听值和8080端口侦听值至少有一个等于0,就触发报警:数据库和jenkins有服务挂了
实例
3.1 count 函数
参数:秒或#num
支持类型:float,int,str,text,log
作用:返回指定时间间隔内数值的统计,
举例:
count(600) 最近10分钟得到的值的个数
count(600,12,eq) 最近10分钟得到的值等于12的个数
count(10m,12,ne) 最近10分钟得到的值不等于12的个数
count(600,12,gt) 最近10分钟得到的值大于12的个数
count(#10,12,gt) 最近10个值中,值大于12的个数
count(600,12,gt,86400) 24小时之前的10分钟内值大于12的个数
count(10m,,,86400) 24小时之前的10分钟数据值的个数
第一个参数:指定时间段
第二个参数:样本数据
第三个参数:操作参数
第四个参数:漂移参数
count函数中支持的操作类型:
eg: 相等
ne:不相等
gt:大于
ge: 大于等于
lt: 小于
le: 小于等于
like: 内容匹配
日常使用举例:
上行流量最近两次都大于50M则告警
{zabbix:net.if.out[em1].count(#2,50M,gt)}=2
最近30分钟zabbix这个主机超过5次不可到达,则告警
{zabbix:icmpping.count(30m,0)}>5
参考:https://blog.csdn.net/wudinaniya/java/article/details/97238995