zabbix自定义触发器语法

简介:

Zabbix触发器的语法如下:

{<server>:<key>.<function>(<parameter>)}<operator><constant>

用Template App Zabbix Agent模板中的主机ping监控的触发器来进行说明:

{Template App Zabbix Agent:agent..nodata(5m)}=<server><key>    agent.<><parameter>    5m 及方法所使用的参数

对于Zabbix支持的function,参考官网:https://www.zabbix.com/documentation/2.2/manual/appendix/triggers/functions

1.abschange
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同

2.avg
参数:秒或#num
支持类型:float,int作用:返回一段时间的平均值
举例:
avg(5):最后5秒的平均值
avg(#5):表示最近5次得到值的平均值
avg(3600,86400):表示一天前的一个小时的平均值
如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,
#n表示最近n次的值

3.change
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同
举例:
change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n

4.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: 内容匹配

5.date参数:忽略
支持类型:any
作用:返回当前的时间,格式YYYYMMDD
6.dayofmonth
返回当前是本月的第几天
7.dayofweek
返回当前是本周的第几天
8.delta
参数:秒或#num
支持类型:float,int作用:返回时间间隔内的最大值与最小值的差值
9.diff参数:忽略
支持值类型:float,int,str,text,log
作用:返回值为1表示最近的值与之前的值不同,0为其他情况
10.fuzzytime
参数:秒
支持值类型:float,int作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同.

11.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()函数获取它的使用方法

12.logeventid
参数:string支持值类型:log
描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持.
13.logseverity
参数:忽略
支持值类型:log
描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.
14.logsource
参数:string支持值类型:log
描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"]
14.max
参数:秒或#num
支持值类型:float,int描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
15.min
参数:秒或#num
支持值类型:float,int描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
16.nodata
参数:秒
支持值类型:any
描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其他.
17.now
参数:忽略
支持值类型:any
描述:返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数
18.prev
参数:忽略
支持值类型:float,int,str,text,log
描述:返回之前的值,类似于last(#2)
19.regexp
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他.
20.str
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他.
21.strlen
参数:秒或#num
支持值类型:str,log,text
描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen(0)等价于strlen(#1),strlen(#3)表示最近的第三个值,strlen(0,86400)表示一天前的最近的值.该函数从Zabbix1.8.4起开始支持
22.sum参数:秒或#num
支持值类型:float,int描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法
23.time参数:忽略
支持值类型:any
描述:返回当前时间,格式为HHMMSS,例如123055

对于<parameter>参数,参考官网:https://www.zabbix.com/documentation/2.2/manual/config/triggers/suffixes

常用的时间参数有以下几种:

s - seconds (when used, works the same as the raw value)
m - minutes
h - hours
d - daysw - weeks

也支持使用容量参数:

K - kilo
M - mega
G - giga
T - tera

举例参数的等效转换,参数1中的参数可以等效使用参数2中的进行替换:

参数1:
{host:zabbix[proxy,zabbix_proxy,lastaccess]}>120{host:system.uptime[].last(0)}<86400{host:system.cpu.load.avg(600)}<10参数2:
{host:zabbix[proxy,zabbix_proxy,lastaccess]}>2m
{host:system.uptime.last(0)}<1d
{host:system.cpu.load.avg(10m)}<10

对于Zabbix触发器的逻辑语法,参考官网:https://www.zabbix.com/documentation/2.2/manual/config/triggers/expression

官网对于运算符的说明:

在表达式中#可以有更多的作用:

sum(600):表示在600秒之内接收到所有值的和

sum(#5):表示最后5个值的和

如果最近的获取的5个值为3, 7, 2, 6, 5

last(#2) would return 7

last(#5) would return 5.

1、A parameter must be given even for those functions which ignore it. Example: last(0)

官网的这句话没理解,大概意思是那些可以忽略参数的functions必须给指定偶数?

2、avg, count, last, min and max functions support an additional, second time_shift parameter. This parameter allows to reference data from a period of time in the past. For example, avg(1h,1d) will return the average value for an hour one day ago.

avg, count, last, min and max functions支持一个额外的,第二个time_shift参数。该参数允许是一个时间周期,将过去的数据作为参照。例如,avg(1h,1d) 将前一天同一个小时的平均值返回。 

3、Triggers only evaluate history information. If history is not available (especially relevant for time shift), trend information is not used, thus history must be kept for at least the period trigger functions expect it.

官网实例的表达式举例:

示例1:

触发器名称:Processor load is too high on www.zabbix.com
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5触发器说明:
www.zabbix.com:host名称
system.cpu.load[all,avg1]:item值,一分内cpu平均负载值last(0):最新值>5:最新值大于5
如上所示,www.zabbix.com这个主机的监控项,最新的CPU负载值如果大于5,那么表达式会返回true,这样一来触发器状态就改变为“problem”了。

示例2:

()}>|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}> 
当前cpu负载大于5或者最近10分内的cpu负载大于2,那么表达式将会返回true.

示例3:

触发器名称:/etc/ has been changed 使用函数 .cksum[/etc/].()}> 
/etc/passwd最新的checksum与上一次获取到的checksum不同,表达式将会返回true. 我们可以使用同样的方法监控系统重要的配置文件,例如/etc/,/etc/inetd.conf等等。这些zabbix一般都会自带,没带的你自己加上吧。

示例4:

触发器名称:Someone is downloading a large .[eth0,bytes].min(5m)}>100K 
当前主机网卡eth0最后5分钟内接收到的流量超过100KB那么触发器表达式将会返回true

示例5:

()}=& {smtp2.zabbix.com:net.tcp.service[smtp].()}= 
当smtp1.zabbix.com和smtp2.zabbix.com两台主机上的SMTP服务器都离线,表达式将会返回true.

示例6:

)}= 
如果当前zabbix agent版本包含beta8(假设当前版本为1.0beta8),这个表达式会返回true.

示例7:

)}> 
如上表达式表示最近30分钟zabbix.zabbix.com这个主机超过5次不可到达。

示例8:

触发器名称:No heartbeats within  = 
tick为Zabbix trapper类型,首先我们要定义一个类型为Zabbix trapper,key为tick的item。我们使用zabbix_sender定期发送数据给tick,如果在3分钟内还未收到zabbix_sender发送来的数据,那么表达式返回一个true,与此同时触发器的值变为“PROBLEM”。

示例9:

触发器名称:CPU activity at night  使用函数 >& {zabbix:system.cpu.load[all,avg1].()}>& {zabbix:system.cpu.load[all,avg1].()}< 
只有在凌晨0点到6点整,最近5分钟内cpu负载大于2,表达式返回true,触发器的状态变更为“problem”

示例10:

触发器名称:Check  client local  is   with Zabbix server )}= 
主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem”

示例11:

触发器名称:Comparing average load today with average load of the same / {server:system.cpu.load.avg(1h,1d)}> 
This expression will fire  the average load of the  hour tops the average load of the same hour yesterday  than two times.
最新一小时的平均负载峰值超过昨天同时段指标两次进行报警

 

特性之Hysteresis(迟滞,滞后):

简单的说触发器状态转变为problem需要一个条件,从problem转变回来还需要一个条件才行。一般触发器只需要不满足触发器为problem条件即可恢复。明白了么?不明白就看例子吧。 有时候触发器需要使用不同的条件来表示不同的状态,举个官网很有趣的例子:机房温度正常稳定为15-20°,当温度超过20°,触发器值为problem,当前情况下,只有温度处在这个温度之间触发器值才会为FALSE。(慢慢理解,这个表达式有点绕) 为了达到这个效果,我们需要使用如下触发器表达式:

示例1:

触发器名称:Temperature =&{server:temp.()}>) | =&{server:temp.()}<) 
注意:宏变量 {TRIGGER.VALUE}将会返回当前触发器的值

实例2:

触发器名称:Free disk space is too low Problem: 最近5分钟内剩余磁盘空间小于10GB。 Recovery: 最近10分钟内磁盘空间大于40GB
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) | ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)

 


      本文转自Mr_chen  51CTO博客,原文链接:http://blog.51cto.com/metis/1953326,如需转载请自行联系原作者






相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
256 0
|
10天前
|
监控 关系型数据库 应用服务中间件
zabbix自定义监控、钉钉、邮箱报警
zabbix自定义监控、钉钉、邮箱报警,实验准备,安装,添加监控对象,添加自定义监控项,监控mariadb,监控NGINX,钉钉报警设置,邮件报警
129 0
|
监控 开发工具
Zabbix自定义KEY报错ZBX_NOTSUPPORTED: Unsupported item key.
[root@zabbix bin]# ./zabbix_get -s 192.217.24.47 -k jump-server ZBX_NOTSUPPORTED: Unsupported item key.
9512 0
|
监控
zabbix利用grafana自定义监控图形展现(十一)
zabbix利用grafana实现监控图形展现 1.修改已有的system load监控图像 下面这张图是现在已经有的系统负载监控图,可以看到只有15分钟的负载并没有1分钟和5分钟的负载,我们现在修改一下图形,让他支持1分钟和5分钟的系统负载
943 0
zabbix利用grafana自定义监控图形展现(十一)
|
监控 应用服务中间件 PHP
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
150 0
zabbix用户自定义参数监控 php-fpm 服务的状态及导出模板和自定义参数
|
监控 Linux
【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警
【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警
142 0
【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警
|
监控 Linux
【zabbix教程四】——zabbix3.0监控磁盘IO与自定义模板
【zabbix教程四】——zabbix3.0监控磁盘IO与自定义模板
327 0
【zabbix教程四】——zabbix3.0监控磁盘IO与自定义模板
|
监控 Java 数据安全/隐私保护
zabbix添加自定义监控项&告警(邮件)
有的时候zabbix提供的监控项目,不能满足我们生产环境下的监控需求,此时我们就要按照zabbix的规范自定义监控项目,来达到监控的目的。
182 0
zabbix添加自定义监控项&告警(邮件)
|
监控 安全 Java
使用 Docker 安装 Zabbix,并配置自定义监控项
Zabbix 可以用来监控各种网络参数,来保证服务器和系统的安全运行。并且 Zabbix 还提供了灵活的通知机制,以此来让系统管理员快速定位/解决存在的各种问题。是一个基于 Web 界面提供的分布式系统监控以及网络监控功能的企业级开源解决方案。
827 0
使用 Docker 安装 Zabbix,并配置自定义监控项
|
监控 网络协议 网络安全
zabbix自定义TCP 11种状态监控模板(十四)
zabbix自定义TCP 11种状态监控模板 如果一直对多个主机同时增加监控项那么会非常麻烦,在实际生产中有很多时候我们都需要对一批机器同时增加多个相同的监控项,如果一个一个手动添加将会非常麻烦,因此就有了模板的诞生,我们只需要创建一个模板,让需要监控的主机链接模板即可
234 0
zabbix自定义TCP 11种状态监控模板(十四)