Zabbix搭建笔记[7]--触发器
来源:互联网 发布:评论系统源码 编辑:程序博客网 时间:2024/06/10 00:50
这一讲我们来配置监控的触发器。
触发器的作用是拿到监控项的数据后,会对数据进行一个判断,每一个触发器都必须要关联一个监控项,但是一个监控项可以对应多个触发器,触发器可以与模板或者主机进行关联。
触发器有两个状态:OK和Problem。
我们可以针对前面创建过的监控项来创建触发器,我们找到前面创建的聚合监控项LinuxHost.cpu.avg所在的主机AggregateCollector,为其创建一个触发器(Trigger):
我们详细解释一下上面的一些重点项目:
Severity:定义了触发器对应的事件级别,不同的事件产生不同颜色的警告信息。
Problem expression:定义了触发器的触发条件,即报警条件
OK event expression:定义了触发器的警报解除条件,这里区分一下几个选项:如果选择了Expression,那么触发器警报解除的条件就是Problem expression的取反条件;如果选择Recovery expression,就像我们上面配置的这种,那么可以单独指定一个额外的Recovery expression;如果选择None,那么这个警报就永远也解除不了。
PROBLEM event generation mode:如果选择Single模式,那么仅当触发器进入Problem时会产生事件,即如果一直在Problem状态没有恢复,选择Single模式只会产生一个事件;如果选择Multiple模式,那么每次触发器条件达成时,都会出发一个事件,即使当时的状态仍然是Problem。
Allow manual close:是否允许人工决定是否关闭这个触发器产生的事件。
对于expression我们可以点击右侧的Add按钮来创建:
这里Item是要计算的监控项,Function是触发器触发条件的计算公式(后面会详细介绍),Last of是时间或者次数设置,Time shift是时间偏移量,N替代的是Function公式中的N。
下面关于expression的部分可以参考zabbix官网文档:
https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression
expression的格式:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
operator的可选项:
优先级
operator
定义
对于未知的值的处理
1
-
一元运算符,负号
不会对未知的值改变,例如-Unknown=Unknown
2
not
逻辑取反
不会对未知的值改变,例如not Unknown=Unknown
3
*
乘法
0 * Unknown = Unknown
[any number] * Unknow = Unknown`
/
除法
Unknown / 0 => Error
[any number] / Unknown = Unknown
Unknown / [any number except 0] = Unknown
4
+
加法
[any number] + Unknown = Unknown
-
减法
[any number] - Unknown = Unknown
5
<
小于
[any number] < Unknown = Unknown
<=
小于等于
[any number] <= Unknown = Unknown
>
大于
同上
>=
大于等于
同上
6
=
等于,误差定义在0.000001
<>
不等于,误差定义在0.000001
7
and
逻辑与
0 and Unknown = 0
1 and Unknown = Unknown
Unknown and Unknown = Unknown
8
or
逻辑或
1 or Unknown = 1
0 or Unknown = Unknown
Unknown or Unknown = Unknown
注意:
not/and/or这几个操作符对于大小写敏感。
对于-和not运算符,注意--1或者not not 1这种写法是不正确的,要使用-(-1)或者not(not1)这种写法。
expression表达式中的时间单位:
S(秒) m(分钟) h(小时) d(天) w(周)
内存大小单位:
K(KB) M(MB) G(GB) T(TB) P(PB) E(EB) Z(ZB) Y(YB)
函数的参数说明:
- 没有单位的数字默认单位是秒,例如last(,1m) = last(,60)。
- #在不同的函数中具有不同的意义,例如sum(#5)表示最后5个值求和,last(#5)表示倒数第5个值。
- last()函数的第一个参数如果是时间的话,会被忽略。
触发器的函数说明:
参见官网连接:https://www.zabbix.com/documentation/3.2/manual/appendix/triggers/functions
注意:参数中time_shift的含义:时间偏移量,如果指定time_shift,则表示统计的基准时间向前推time_shift指定的秒数;可选参数使用“<Param>”表示;对于浮点数,误差在0.000001内认为是相等的。
方法名称
描述
参数说明
示例
abschange
返回上一次取值和上上次取值的差值的绝对值
无
支持的值类型有float, int, str, text, log
avg(sec|#num,<time_shift>)
返回指定时间间隔的平均值
sec:秒数
#num:最近#num次的值
支持的值类型有float, int
band(sec|#num,mask,<time_shift>)
将监控值和掩码进行“按位与”操作
sec:秒数
#num:倒数第#num个取值
支持的值类型有int
尽管按位与的操作是二进制的操作,但是传参和返回值都是十进制的,例如:
band(,12)=8 or band(,12)=4表示第三位为1或第四位为1,但是不能同时为1(12 => 1100,8 => 1000,4 => 0100)
change
返回上一次取值和上上次取值的差值,字符串的话,相等返回0,不相等返回1
无
支持的值类型有float, int, str, text, log
count(sec|#num,<pattern>,<operator>,<time_shift>)
返回指定时间间隔内统计得到的数值
sec:秒数
#num:最近#num次的值
pattern:给定的匹配值
operators:
eq——相等
ne——不相等
gt——大于
ge——大于等于
lt——小于
le:小于等于
like——包含
band——按位与
regexp——(区分大小写)匹配正则式
iregexp——不区分大小写的regexp
支持的值类型有float, int, str, text, log
如果operator指定为band,则pattern可以通过“/”指定两个数: number_to_compare/mask,当前值与mask按位与后与number_to_compare比较,如果结果相等,则计数+1
使用实例:
count(10m)——最近10分钟的统计值的数量
count(10m,12)——最近10分钟值等于12的次数
count(10m,12,"gt")——最近10分钟内值大于12的次数
count(#10,12,"gt")——最近12个取值内大于12的次数
countn(10m,12,"gt",1d)——24小时之前的10分钟内取值大于12的次数
count(10m,6/7,"band)——最近10分钟内取值转换成2进制后后三位等于"110"的次数
count(10m,,,1d)——24小时之前的10分钟内统计到的值的数量
date
返回当前日期,格式YYYYMMDD
无
支持的值类型有any
dayofmonth
返回当前日期是本月第几天
无
支持的值类型有any
返回值1-31
dayofweek
返回当前日期是本周的星期几
无
支持的值类型有any
返回值1-7(1对应周一,7对应周日)
delta(sec|#num,<time_shift>)
返回指定时间间隔内最大值与最小值的差值
sec:秒数
#num:最近#num次的值
支持的值类型有float, int
diff
检测上次和上上次取值是否相等
无
支持的值类型有float, int, str, text, log
返回值1表示不同,0表示其他情况(相同或无法比较)
forecast(sec|#num,<time_shift>,time,<fit>,<mode>)
根据现有取值预测得到未来可能检测到的值,最大值,最小值,delta,平均值
pattern:指定字符串
sec:秒数
#num:最近#num次的值
time:时间基准点
fit:预测函数模型(算法)
liner——线性模型(默认)
polynomialN——N次多项式(N不能超过6)模型
exponential——指数模型
logarithmic——对数模型
power——幂运算模型
mode:输出结果选项
value/max/min/delta(max-min)/avg
注意:value表示预测now+time时间点的值
max/min/delta/avg预测now和now+time时间范围内的值
支持的值类型有float, int
如果返回结果大于999999999999.9999或者小于-999999999999.9999,则会被裁剪成999999999999.9999或-999999999999.9999
如果参数传错了的话,返回not supported,如果其他错误,则返回-1
使用实例:
forecase(#10,,1h)——基于最后取到的10个值预测1小时之后的值
forecast(1h,,30m)——基于前一小时的数据预测30分钟后的值
forecast(1h,1d,12h)——基于前1天零1小时的数据预测12小时之后的数据
forecast(1h,,10m,exponential)——使用指数模型利用前一小时的数据预测10分钟之后的数据
forecast(1h,,2h,polynomial3,max)——基于三次多项式模型以及前一小时的数据预测未来两小时内可能的最大值
forecast(#2,,-20m)——基于前两次的值预测02分钟前的取值(如果一个值的更新周期超过20分钟或者极少更新,则这个预测值可以帮助进行一些判断)
fuzzytime(sec)
检查监控项的Timestamp与zabbix server的时间差
sec(秒)
支持的值类型有float, int
如果时间差超过sec指定的描述,则返回0,否则返回1
iregexp(pattern,<sec|#num>)
regexp()不区分大小写的版本
见regexp
支持的值类型有str, log, text
last(sec|#num,<time_shift>)
最近一次的监控值
pattern:指定字符串
sec:秒数
#num:倒数第#num个取值
支持的值类型有float, int, str, text, log
不指定参数默认返回上一次的值
logeventid(pattern)
检测最后一条日志的event ID是否匹配正则表达式
pattern:用于匹配的正则式
支持的值类型有log
不匹配返回0
匹配返回1
logseverity
返回最后一条日志的日志等级
无
支持的值类型有log
默认等级返回0,否则返回对应数字(1-Information/2-Warning/4-Error/7-Failure Audit/8-Success Audit/9-Critical/10-Verbose)
logsource(pattern)
检查最后一条日志的来源是否匹配正则表达式
pattern:要匹配的字符串
支持的值类型有log
不匹配返回0
匹配返回1
max(sec|#num,<time_shift>)
返回指定时间间隔内的最大值
pattern:指定字符串
sec:秒数
#num:最近#num次的值
支持的值类型有float, int
min(sec|#num,<time_shift>)
返回指定时间间隔内的最小值
pattern:指定字符串
sec:秒数
#num:最近#num次的值
支持的值类型有float, int
nodata(sec)
检查指定时间间隔内是否有数据产生
sec:秒数,不能小于30
支持的值类型有any
如果指定时间内没有任何取值则返回1,否则返回0
now
返回距离1970年1月1日 00:00:00 UTC到现在经过的描述
无
支持的值类型有any
percentile(sec|#num,<time_shift>,percentage)
返回在指定时间间隔内百分率小于等于percentage参数的次数,关于percentile可以参考wiki:https://en.wikipedia.org/wiki/Percentile
sec:秒数
#num:最近#num次的值
percentage:百分数,浮点型,包含整数位不超过4个数字
支持的值类型有float, int
prev
返回前一次取值
无
支持的值类型有float, int, str, text, log
regexp(pattern,<sec|#num>)
检查最近一次取值是否匹配给定的正则式
pattern:用于匹配的正则式
sec:秒数
#num:最近#num次的值
支持的值类型有float, int, str, text, log
找到匹配返回1,否则返回0
str(pattern,<sec|#num>)
从最近一次取值中找到指定的字符串
pattern:指定字符串
sec:秒数
#num:最近#num次的值
支持的值类型有str, text, log
找到匹配返回1,否则返回0
strlen(<sec|#num>,<time_shift>)
最近一次取值的字符串长度(非比特数)
sec:秒数
#num:倒数第#num个取值
支持的值类型有str, text, log
使用实例:
strlen()——返回最近一次值的字符串长度
strlen(#3)——返回倒数第三个值的字符串长度
strlen(,1d)——返回1天前最后一次取值的字符串长度
sum(sec|#num,<time_shift>)
针对给定时间内收集到的值求和
sec:秒数
#num:最近#num次的值
支持的值类型有float, int
time
返回当前时间,格式HHMMSS
无
支持的值类型有any
timeleft(sec|#num,<time_shift>,threshold,<fit>)
根据现有取值预测某个监控项达到某个值还需要经过的秒数
sec:秒数
#num:最近#num次的值
threshold:阈值
fit:见forecast
支持的值类型有float, int
如果返回结果大于999999999999.9999或者小于-999999999999.9999,则会被裁剪成999999999999.9999或-999999999999.9999
如果参数传错了的话,返回not supported,如果其他错误,则返回-1
timeleft(#10,,0)——根据最后10次的取值预测取值达到0的时间
timeleft(1h,,100)——根据前一小时的数据预测取值达到100的时间
timeleft(1h,1d,0)——根据前一天零一小时的数据预测取值达到0的时间
Timeleft(1h,,200,polynomial2)——根据2次多项式以及前一小时的数据预测取值达到200的时间
- Zabbix搭建笔记[7]--触发器
- Zabbix搭建笔记[1]--Zabbix Server安装
- Centos 7 搭建 Zabbix
- Zabbix搭建笔记[2]--Zabbix Agent(Client)的安装配置
- zabbix学习笔记——环境搭建
- Zabbix搭建笔记[4]--web监控配置
- Zabbix搭建笔记[5]--agent监控参数
- Zabbix搭建笔记[8]--报警配置简介
- Zabbix搭建笔记[9]--报警设置示例
- Zabbix搭建笔记[10]--Network Discovery
- zabbix触发器参数
- zabbix触发器表达式介绍
- zabbix触发器表达式详解
- zabbix触发器介绍
- zabbix,触发器表达式
- zabbix触发器表达式详解
- zabbix搭建
- Centos 7下搭建Zabbix监控软件
- SQlite数据库
- NY oj
- Leetcode#13: Roman to Integer
- 《Effective C++读书笔记》--条款02尽量以const,enum,inline替换#define
- JAVA 获取IP
- Zabbix搭建笔记[7]--触发器
- 【Struts2】(3)Struts2国际化、Struts2上传下载、Struts2标签使用
- IOS
- 用vue构建项目笔记6(在vue中使用vue resource)
- 为给俺的小白救星浏览器增加一个调试功能绞尽脑汁搞了2天了,终于搞出点眉目,不容易啊☺
- -0的存储在计算机中到底代表啥?
- 为什么需要项目管理软件
- springboot【23】监控管理之Actuator监控端点实践
- MongoDB学习笔记(入门)