Zabbix 触发器函数方法整理

时间:2022-06-28 05:05:06

函数介绍

abschange
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同
avg 参数:秒或
#num 支持类型:float,int 作用:返回一段时间的平均值 举例: avg(5):最后5秒的平均值 avg(#5):表示最近5次得到值的平均值 avg(3600,86400):表示一天前的一个小时的平均值 如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间, #n表示最近n次的值 示例: 触发器名称:Comparing average load today with average load of the same time yesterday (使用 time_shift 时间偏移量参数). {server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2 This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times. max 参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法. 示例: 触发器名称:Free disk space is too low Problem: 最近5分钟内剩余磁盘空间小于10GB ({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) min 参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法. 示例: 触发器名称:Free disk space is too low Problem:最近10分钟内磁盘空间大于40GB ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G) nodata 参数:秒 支持值类型:any 描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其他. 示例: 触发器名称:No heartbeats within last 3 minutes 使用函数 nodata(): {zabbix.zabbix.com:tick.nodata(3m)}=1 change 参数:忽略 支持类型:float,int,str,text,log 作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同 举例: change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n count 参数:秒或#num 支持类型:float,int,str,text,log 作用:返回指定时间间隔内数值的统计, 举例: count(600)最近10分钟得到值的个数 count(600,12)最近10分钟得到值的个数等于12 count(600,12,"gt")最近10分钟得到值的个数大于12 count(#10,12,"gt")最近10个值中,值大于12的个数 count(600,12,"gt",86400)24小时之前的10分钟内值大于12的个数 count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving'110'(inbinary)inthe3leastsignificantbits. count(600,,,86400)24小时之前的10分钟数据值的个数 第一个参数:指定时间段 第二个参数:样本数据 第三个参数:操作参数 第四个参数:漂移参数 #支持的操作类型 eq: 相等 ne: 不相等 gt: 大于 ge: 大于等于 lt: 小于 le: 小于等于 like: 内容匹配 date 参数:忽略 支持类型:any 作用:返回当前的时间,格式YYYYMMDD dayofmonth 返回当前是本月的第几天
dayofweek 返回当前是本周的第几天
delta 参数:秒或
#num 支持类型:float,int 作用:返回时间间隔内的最大值与最小值的差值 diff 参数:忽略 支持值类型:float,int,str,text,log 作用:返回值为1表示最近的值与之前的值不同,0为其他情况 示例: 触发器名称:/etc/passwd has been changed 使用函数 diff(): {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0 fuzzytime 参数:秒 支持值类型:float,int 作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同. 示例: 触发器名称:Check if client local time is in sync with Zabbix server time 使用函数 fuzzytime(): {MySQL_DB:system.localtime.fuzzytime(10)}=0 主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem” last 参数:秒或#num 支持值类型:float,int,str,text,log 作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的 例子: last(0)等价于last(#1)last(#3)表示最近**第**3个值(并不是最近的三个值) 本函数也支持第二个参数**time_shift**,例如 last(0,86400)返回一天前的最近的值 如果在history中同一秒中有多个值存在,Zabbix不保证值的精确顺序 #num从Zabbix1.6.2起开始支持,timeshift从1.8.2其开始支持,可以查询avg()函数获取它的使用方法
logeventid 参数:string 支持值类型:log 描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持. logseverity 参数:忽略 支持值类型:log 描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列. logsource 参数:string 支持值类型:log 描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"] now 参数:忽略 支持值类型:any 描述:返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数 prev 参数:忽略 支持值类型:float,int,str,text,log 描述:返回之前的值,类似于last(#2) regexp 参数:第一个参数为string,第二个参数为秒或#num 支持值类型:str,log,text 描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他. str 参数:第一个参数为string,第二个参数为秒或#num 支持值类型:str,log,text 描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他. 示例: 触发器名称:Zabbix agent needs to be upgraded 使用函数str(): {zabbix.zabbix.com:agent.version.str("beta8")}=1 如果当前zabbix agent版本包含beta8(假设当前版本为1.0beta8),这个表达式会返回true. strlen 参数:秒或#num 支持值类型:str,log,text 描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen(0)等价于strlen(#1),strlen(#3)表示最近的第三个值,strlen(0,86400)表示一天前的最近的值.该函数从Zabbix1.8.4起开始支持 sum 参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法 time 参数:忽略 支持值类型:any 描述:返回当前时间,格式为HHMMSS,例如123055

 

函数案例


  •  # 最新返回值不等于1就触发
  • {test:key.last(0)}<>1

  •  # 最新返回值等于1就触发
  • {test:key.last(0)}=1

  •  # 连续三分钟平均值在80%就触发
  • {test:key.avg(3m)}>80

  •  # 连续三分钟最大值在80%以上就触发
  • {test:key.max(3m)}>80

 

内置触发器案例


  •  # 如果agent客户端断开连接3分钟就返回1就出发报警
  • # 注:agent ,需要先建立监控项,可在模板中查看。
  • 触发器:{test:agent.ping.nodata(3m)}=1

  • # 如果CPU使用率1分钟平均值超80%就报警
  • # 监控部署:名称:CPU $2 time、键值:system.cpu.util[,idle]、信息类型:浮点数、单位:%  
  • 触发器:{test:system.cpu.util[,idle].avg(3m)}<20