【Linux】Zabbix自定义触发器语法
Zabbix触发器的语法如下:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
用Template App Zabbix Agent模板中的主机ping监控的触发器来进行说明:
{Template App Zabbix Agent:agent.ping.nodata(5m)}= <server> Template App Zabbix Agent 即监控模板
<key> agent.ping 即监控模板里的项目Items
<function> nodata() 及项目所使用的方法
<parameter> 5m 及方法所使用的参数
<operator> 操作人,选填
<constant> 持续性,选填
对于Zabbix支持的function,参考官网:https://www.zabbix.com/documentation/2.2/manual/appendix/triggers/functions
.abschange
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同
.avg
参数:秒或#num
支持类型:float,int
作用:返回一段时间的平均值
举例:
avg():最后5秒的平均值
avg(#):表示最近5次得到值的平均值
avg(,):表示一天前的一个小时的平均值
如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,
#n表示最近n次的值
.change
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同
举例:
change()>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n
.count
参数:秒或#num
支持类型:float,int,str,text,log
作用:返回指定时间间隔内数值的统计,
举例:
count()最近10分钟得到值的个数
count(,)最近10分钟得到值的个数等于12
count(,,"gt")最近10分钟得到值的个数大于12
count(#,,"gt")最近10个值中,值大于12的个数
count(,,"gt",)24小时之前的10分钟内值大于12的个数
count(,/,"band")-thenumberofvaluesforlast10minuteshaving''(inbinary)inthe3leastsignificantbits.
count(,,,)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为其他情况
.fuzzytime
参数:秒
支持值类型:float,int
作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同.
.last
参数:秒或#num
支持值类型:float,int,str,text,log
作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的
last()等价于last(#)last(#)表示最近**第**3个值(并不是最近的三个值)
本函数也支持第二个参数**time_shift**,例如
last(,)返回一天前的最近的值
如果在history中同一秒中有多个值存在,Zabbix不保证值的精确顺序
#num从Zabbix1..2起开始支持,timeshift从1..2其开始支持,可以查询avg()函数获取它的使用方法
.logeventid
参数:string
支持值类型:log
描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1..5起开始支持.
.logseverity
参数:忽略
支持值类型:log
描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.
.logsource
参数:string
支持值类型:log
描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"]
.max
参数:秒或#num
支持值类型:float,int
描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1..2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
.min
参数:秒或#num
支持值类型:float,int
描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1..2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
.nodata
参数:秒
支持值类型:any
描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示其他.
.now
参数:忽略
支持值类型:any
描述:返回距离Epoch(1970年1月1日00::00UTC)时间的秒数
.prev
参数:忽略
支持值类型:float,int,str,text,log
描述:返回之前的值,类似于last(#)
.regexp
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他.
.str
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他.
.strlen
参数:秒或#num
支持值类型:str,log,text
描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen()等价于strlen(#),strlen(#)表示最近的第三个值,strlen(,)表示一天前的最近的值.该函数从Zabbix1..4起开始支持
.sum
参数:秒或#num
支持值类型:float,int
描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1..2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法
.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 - days
w - weeks
也支持使用容量参数:
K - kilo
M - mega
G - giga
T - tera
举例参数的等效转换,参数1中的参数可以等效使用参数2中的进行替换:
参数1:
{host:zabbix[proxy,zabbix_proxy,lastaccess]}>
{host:system.uptime[].last()}<
{host:system.cpu.load.avg()}< 参数2:
{host:zabbix[proxy,zabbix_proxy,lastaccess]}>2m
{host:system.uptime.last()}<1d
{host:system.cpu.load.avg(10m)}<
对于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()}>
触发器说明:
www.zabbix.com:host名称
system.cpu.load[all,avg1]:item值,一分内cpu平均负载值
last():最新值
>:最新值大于5
如上所示,www.zabbix.com这个主机的监控项,最新的CPU负载值如果大于5,那么表达式会返回true,这样一来触发器状态就改变为“problem”了。
示例2:
触发器名称:www.zabbix.com is overloaded
{www.zabbix.com:system.cpu.load[all,avg1].last()}>|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>
当前cpu负载大于5或者最近10分内的cpu负载大于2,那么表达式将会返回true.
示例3:
触发器名称:/etc/passwd has been changed 使用函数 diff():
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}>
/etc/passwd最新的checksum与上一次获取到的checksum不同,表达式将会返回true. 我们可以使用同样的方法监控系统重要的配置文件,例如/etc/passwd,/etc/inetd.conf等等。这些zabbix一般都会自带,没带的你自己加上吧。
示例4:
触发器名称:Someone is downloading a large file from the Internet 使用函数 min:
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
当前主机网卡eth0最后5分钟内接收到的流量超过100KB那么触发器表达式将会返回true
示例5:
触发器名称:Both nodes of clustered SMTP server are down
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0 & {smtp2.zabbix.com:net.tcp.service[smtp].last()}=
当smtp1.zabbix.com和smtp2.zabbix.com两台主机上的SMTP服务器都离线,表达式将会返回true.
示例6:
触发器名称:Zabbix agent needs to be upgraded 使用函数str():
{zabbix.zabbix.com:agent.version.str("beta8")}=
如果当前zabbix agent版本包含beta8(假设当前版本为1.0beta8),这个表达式会返回true.
示例7:
触发器名称:Server is unreachable
{zabbix.zabbix.com:icmpping.count(30m,)}>
如上表达式表示最近30分钟zabbix.zabbix.com这个主机超过5次不可到达。
示例8:
触发器名称:No heartbeats within last minutes 使用函数 nodata():
{zabbix.zabbix.com:tick.nodata(3m)}=
tick为Zabbix trapper类型,首先我们要定义一个类型为Zabbix trapper,key为tick的item。我们使用zabbix_sender定期发送数据给tick,如果在3分钟内还未收到zabbix_sender发送来的数据,那么表达式返回一个true,与此同时触发器的值变为“PROBLEM”。
示例9:
触发器名称:CPU activity at night time 使用函数 time():
{zabbix:system.cpu.load[all,avg1].min(5m)}>2 & {zabbix:system.cpu.load[all,avg1].time()}>000000 & {zabbix:system.cpu.load[all,avg1].time()}<
只有在凌晨0点到6点整,最近5分钟内cpu负载大于2,表达式返回true,触发器的状态变更为“problem”
示例10:
触发器名称:Check if client local time is in sync with Zabbix server time 使用函数 fuzzytime():
{MySQL_DB:system.localtime.fuzzytime()}=
主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem”
示例11:
触发器名称: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)}>
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.
最新一小时的平均负载峰值超过昨天同时段指标两次进行报警
特性之Hysteresis(迟滞,滞后):
简单的说触发器状态转变为problem需要一个条件,从problem转变回来还需要一个条件才行。一般触发器只需要不满足触发器为problem条件即可恢复。明白了么?不明白就看例子吧。 有时候触发器需要使用不同的条件来表示不同的状态,举个官网很有趣的例子:机房温度正常稳定为15-20°,当温度超过20°,触发器值为problem,当前情况下,只有温度处在这个温度之间触发器值才会为FALSE。(慢慢理解,这个表达式有点绕) 为了达到这个效果,我们需要使用如下触发器表达式:
示例1:
触发器名称:Temperature in server room is too high
({TRIGGER.VALUE}=&{server:temp.last()}>) | ({TRIGGER.VALUE}=&{server:temp.last()}<)
注意:宏变量 {TRIGGER.VALUE}将会返回当前触发器的值
实例2:
触发器名称:Free disk space is too low Problem: 最近5分钟内剩余磁盘空间小于10GB。 Recovery: 最近10分钟内磁盘空间大于40GB
({TRIGGER.VALUE}=&{server:vfs.fs.size[/,free].max(5m)}<10G) | ({TRIGGER.VALUE}=&{server:vfs.fs.size[/,free].min(10m)}<40G)
上面部分内容转自:http://www.ttlsa.com/zabbix/zabbix-trigger-expression/
【Linux】Zabbix自定义触发器语法的更多相关文章
- zabbix自定义触发器
zabbix中监控项仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器"正式 用于为监控项所收集的数据定义阈值,每一个触发器 ...
- zabbix自定义触发器进行监控
给某一主机创建触发器 触发器属性,其中centos是主机名,也就是你监控的那台主机的名字,可以点击bp2,查看该主机的hostname 检测该触发器 在该主机下可以看到刚创建的触发器 最后我们给该主机 ...
- Zabbix 自定义Key
系统:Linux Centos 7.4 x64.Windos 2008 x64 服务:Zabbix 3.0.16 说明1:自定义Key 主要通过自定义 脚本 或者 命令 来实现自定义监控类型,需要在a ...
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- Linux 创建自定义命令
Linux 创建自定义命令 Linux 可以创建自定义使用命令 这里我们采取使用“alias”命令.这里我们首先了解两个文件,通过这两个文件我们可以根据环境配置相应的自定义命令. 该文件内创建的自定义 ...
- zabbix自定义web检测
zabbix自定义web检测 本博客使用zabbix 版本 4.0.3 Web监控的原理 Web监控即对HTTP服务的监控,模拟用户去访问网站,对特定的结果进行比较,如状态码.返回字符串等特定的数据进 ...
- zabbix 自定义监控nginx
zabbix自定义nginx监控项 查看nginx编译安装是否加上该选项,如果没有请重新编译安装 配置nginx.conf vim /usr/local/cpgroup/nginx/conf/vhos ...
- (27)zabbix自定义图表Graph
zabbix提供了一个自定义图表的功能,这不是废话么?呵呵~前面文章 讲到的<zabbix简易图表>只能显示单个item的数据图表.如果我们想显示多个信息到一个图表上,那必须使用zabbi ...
- (21)zabbix创建触发器trigger
1. 创建触发器 了解了什么触发器,接下来看下zabbix触发器怎么创建和配置,方法很简单,请大家往下读,有什么问题请留言. 创建触发器步骤: 点击Configuration(配置) → Hosts( ...
随机推荐
- 将List<Map>中的datas转换为json格式写入文件
private static boolean writeToTextFileByJson(List<Map<String, Object>> datas, String tit ...
- ERP_Oracle Erp发展趋势基于SOA电子商务方案
2014-01-12 Created By BaoXinjian
- DBA_VMware虚拟机安装和简介(案例)
2014-08-08 Created By BaoXinjian
- Python 汉字转拼音库 pypinyin
一.初衷: 一些开源软件的配置文件中识别区分的部分用英文,那么我们在批量生成配置文件的时候,可以从CMDB导入汉字(idc_name), 然后将它转换成拼音,再或者拼接上IP地址,以便更准确的识别.例 ...
- [物理学与PDEs]第2章习题参考解答
[物理学与PDEs]第2章习题1 无旋时的 Euler 方程 [物理学与PDEs]第2章习题2 质量力有势时的能量方程 [物理学与PDEs]第2章习题3 Laplace 方程的 Neumann 问题 ...
- [复变函数]第11堂课 3.3 Cauchy 积分定理及其推论
0. 引言 (1) Cauchy 积分定理: 设 $D$ 为 $(n+1)$ 连通区域, $f$ 在 $D$ 内解析且连续到边界 $C$, 则 $\dps{\int_C f(\zeta)\rd \ze ...
- ios模拟器未能安装此应用程序
网上介绍了很多方法,觉得有些不太靠谱.这里只解释我试验过的最简单最粗暴的方法: 删除模拟器上旧的APP 以外,也可以做 CLEAN (cmd+shift+K) 把旧的build 删掉.
- [AIR] Screen 的应用
Screen 类提供此应用程序的可用显示屏幕的相关信息. 屏幕是位于可能更大的“虚拟桌面”内的独立桌面区域.虚拟桌面的原点是操作系统指定的主屏幕的左上角.因此,个别显示屏幕范围的坐标可能是负数.虚拟桌 ...
- [Flex] ButtonBar系列——flex3 皮肤和外观设置
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...
- Hibernate注解:一对一主键关联
情形:两个表,my_site和my_site_company,通过主键site_id唯一关联.my_site的主键是自动增加,my_site_company的主键依赖于my_site. # # Sou ...