Zabbix Trigger表达式实例

摘要:
特定的触发器功能可以访问https:注意服务器操作“老板不满意”。哦,根据手册,他部署了Zabbix并将代理安装在“test-01”服务器上。uptime”项用于收集主机运行时间;该项用于收集CPU空闲百分比。收集这些值后,意味着在重新启动计算机时如何判断当前值是否小于上一个值。即,代理关闭或服务器挂起

Zabbix提供强大的触发器(Trigger)函数以方便进行更为灵活的报警及后续动作,具体触发器函数可以访问https://www.zabbix.com/documentation/2.0/manual/appendix/triggers/functions, 之前也有翻译本文章,地址为: http://pengyao.org/zabbix-triggers-functions.html

今天用实例来说明常见的监控需求,应该如何来编写Trigger表达式. 主人公就暂且叫做"绿肥"吧.

前奏

"绿肥,别整天就知道聊QQ,也关注下服务器运行情况吧." 老大颇不满意的说.

"哦",绿肥只好先应承下来

“关注服务器? 咋关注?” 绞尽脑汁,听说有个监控神器叫zabbix, 按照手册里边说的部署上了zabbix、将"test-01"服务器也安装了agent, 添加了"agent.ping" item用来测试agent是否可以连通; "system.uptime" item用来收集主机运行时间; “system.cpu.util[,idle]” item用来收集CPU空闲百分比.

收集完这些值,通过simple graph能看到运行状况,老大似乎很满意. 但接下来的一天, 主机不知道什么时候重启了,老大劈头盖脸的说“机器重启了都不知道?要这个监控有什么用?”

看来是时候学习下zabbix trigger了,看下什么情况下触发报警.

Zabbix Trigger实例

"得,还是先学习下怎么判断机器是否重启了吧",绿肥喃喃的说

system.uptime映入眼帘,这个item是采集主机运行时间的,一直累加的计数器,如果当前采集值小于上一次的采集值,那就意味着机器重启了

怎么判断当前值小于上一次哪? 查询手册发现change函数, 看来对应的Trigger表达式是:

{test-01:system.uptime.change(0)}<0

表达式加上后,配合上默认的Action规则,手动重启了下服务器,真的告警的耶,绿肥愉快的笑了起来.

直到又一天的到来......

这天机器重启了,因为硬盘故障, 结果系统没起来, 直到老大发现......

"哎,又挨了一通训", 不过的确是工作不到位,系统没启动都不知道,这工作做得真叫一个差

"怎么搞",agent.ping映入了眼帘,看来得拿它"出出气"了,ping不通都不告诉我,哼,不整治你整治谁

"系统没起来,也就意味着zabbix agent没启动起来,没启动起来,那就是说我大zabbix server根本取不到agent的数据,那么该用哪个函数那?", "nodata",对,就是它,写出来的表达式是这样的:

{test-01:agent.ping.nodata(3m)}=1

三分钟取不到agent.ping的值,那也就是说agent宕了或者服务器挂了,不错,不错.

直到又一天的到来......

"什么情况,怎么网站打开这么慢?" 老大在那里嘟囔着

趁机看了下CPU使用率,我擦,已经持续一小时CPU 100%满负荷运行了,看来隔壁研发小妹又写了个死循环,不过我是不是得增加个CPU的报警?

说干就干,既然是CPU有问题,那就从CPU下手,之前增加过"system.cpu.util[,idle]"的item,这次就写个trigger, 写出来的trigger是这个样子:

{test-01:system.cpu.util[,idle].last(0)}<20

也就是说如果cpu空闲小于20%即CPU占用超过80%立即触发报警,嘿嘿,看来不错

一天过去了,邮箱里增加了几百封关于"CPU使用率超过80%的邮件",查询一看,CPU使用率总是冒个尖就马上就下来了,看来它把这里当城门了,这里用last(0)有点不靠谱,那么该用哪个函数哪? 还得好好翻翻手册.

"最近几分钟,最近几分钟,最近几分钟",绿肥若有所思的自言自语着......

{test-01:system.cpu.util[,idle].avg(3m)}<20

连续三分钟CPU使用率平均值超过80%触发报警, 有没有更狠一点的,三分钟CPU使用率持续在80%以上触发报警

{test-01:system.cpu.util[,idle].max(3m)}<20

连续三分钟CPU空闲率中的最大值小于20%即每一个值都小于20%,对应的是就是CPU使用率全部都在80%以上,看来这个的确更狠一点.

似乎还有点不妥,发现CPU占用率在79.9%左右竟然也给我报OK,不爽,不爽, 看来需求得调整为"连续三分钟CPU使用率超过80%触发报警,如果连续三分钟CPU使用率低于50%才认为恢复正常"

手册里边有个"TRIGGER.VALUE"宏,看来得从这里下下手.

TRIGGER.VALUE对应的为Trigger状态,0代表OK, 1代表Problem,分解下需求:

  • 正常情况下连续三分钟CPU使用率超过80%,看起来表达式是:

    {TRIGGER.VALUE}=0&{test-01:system.cpu.util[,idle].max(3m)}<20
    
  • 故障时连续三分钟CPU使用率低于50%恢复正常,即故障时刻CPU使用率持续三分钟高于50%依然为故障,表达式是这个样子的:

    {TRIGGER.VALUE}=1&{test-01:system.cpu.util[,idle].min(3m)}<50
    

然后整合下表达式,就成了下边这个样子:

({TRIGGER.VALUE}=0&{test-01:system.cpu.util[,idle].max(3m)}<20) | ({TRIGGER.VALUE}=1&{test-01:system.cpu.util[,idle].min(3m)}<50)

不错,不错,看起来多高端,颇有成就感!

免责声明:文章转载自《Zabbix Trigger表达式实例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mount /mnt/cdrom 提示错误信息“mount: can't find /mnt/cdrom in /etc/fstab or /etc/mtab”为知笔记+Typora+PicGo发表博客园博客下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL的截取字符串和链接字符串函数

MySQL在查询或者更新数据的时候,有字符串函数可用。 截取字符串函数:substring、instr 用法如下: update `table` set field5 = SUBSTRING(field5 , 1 , INSTR( field5 ,'-')-1) where id = 1; //这里,要从field5里面最开始一直截取到‘-’的地方(不包...

R语言数据挖掘方法及应用

R语言数据挖掘方法及应用 第1篇 起步篇:R语言数据挖掘入门并不难 1 数据挖掘与R语言概述 1.1 为什么要学习数据挖掘和R语言 1.2 什么是数据挖掘 1.3 数据挖掘能给出什么 1.3.1 数据挖掘结果有哪些呈现方式 1.3.2 数据挖掘结果有哪些基本特征 1.4 数据挖掘能解决什么问题 1.4.1 数据预测 1.4.2 发现数据的内在结构 1.4....

PHP异步扩展Swoole笔记(1)

安装Swoole扩展 通过pecl安装, 系统中最好已经有http2依赖, 如果是Ubuntu, 可以直接通过apt安装nghttp2, 如果是Centos或者需要自己编译, 在Github下载nghttp2 https://github.com/tatsuhiro-t/nghttp2 后编译安装) 运行pecl需要autoconf, 如果没有会报错 Ca...

C++ 类的存储方式以及虚函数表

一、C++成员函数在内存中的存储方式   用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如下图所示。         能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去...

iOS 强制退出程序APP代码

1、先po代码 // 退出程序 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:self.exitapplica...

Qt笔记-const-虚函数-元对象系统

const与指针摘自C++ Primer Plus (第五版) 中文版const(常量): const变量的地址可以给指向const的指针,但不能指向常规类型的指针: const float a=112.3 const flaot *p1=&a //right const float a=112.3 flaot *p1=&a //...