zabbix触发器表达式详解

一 概述

当监控项用于采集系统的数据时,始终遵循这些数据时不切实际的,因为这些数据始终在等待一个令人担忧或者值得关注的状态。然而这个“评估”数据的工作可以留给触发器表达式。

触发器表达式允许定义一个什么状况的数据是“可接受”的阈值。因此,如果接收的数据超过了可接受的状态,则触发器会被触发-或将状态更改为PROBLEM.

一个触发器可以拥有下面两种状态:

描述
OK这是一个正常的触发器状态,在旧版本的zabbix中为 FALSE
PROBLEM通常意味着触发了某些事情。例如,处理器的负载较高。在旧版本的zabbix中称为 TRUE

每当zabbix server接收到作为表达式一部分的新值时,都会重新计算触发器状态(表达式)。

如果在表达式中使用基于时间的函数(nodata(),date(),dayofmonth(),dayofweek(),time(),now()),触发器就会由 zabbix timer进程每30秒重新计算一次。如果在表达式中同时使用基于时间和非基于时间的函数,当接收到一个新值和每隔30秒都会重新计算触发器的状态。

二 触发器表达式

触发器中使用的表达式是非常灵活的。你可以使用他们去创建关于监控统计的复杂逻辑测试。

触发器表达式形式如下:

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

{主机:key.函数(参数)} + 表达式运算符 + 常数

比如:

2.1 触发器函数function:

触发器function函数可以引用检索到的值,当前时间或其他元素。

 

2.2 函数参数

大多数数字型的函数接受秒数来作为参数。

你可以使用前缀#来指定参数具有不同的含义:

函数内容含义
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 运算符

触发器支持的运算符(在执行中优先级递减)

优先级运算符定义
1not逻辑非
2*
 /相除
3+相加
 -相减
4<小于。该运算符定义:
A<B <=> (A<=B-0.000001)
 <=小于等于
 >大于。该运算符定义:
A>B <=> (A>=B+0.000001)
 >=大于等于
5=

相等。该算符定义:

A=B <=> (A>B-0.000001) and (A<B+0.000001)

 <>

不等于

6and逻辑与
7or逻辑或

注意:

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
 

#192.168.0.101上监控项 department-status[beijing] 在最近3次当中监控项的值>1 超过两次,则处触发告警
触发器表达式:{192.168.0.101:department-status[beijing].count(#3,1,gt)}>2

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值