阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Zabbix Trigger表达式实例详解

138次阅读
没有评论

共计 2983 个字符,预计需要花费 8 分钟才能阅读完成。

Zabbix 提供强大的触发器 (Trigger) 函数以方便进行更为灵活的报警及后续动作,具体触发器函数可以访问。今天用实例来说明常见的监控需求,应该如何来编写 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 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

CentOS 7 LNMP 环境搭建 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140134.htm

Ubuntu 16.04 安装部署监控系统 Zabbix2.4  http://www.linuxidc.com/Linux/2017-03/141436.htm

Zabbix 监控安装部署及警报配置  http://www.linuxidc.com/Linux/2017-03/141611.htm

Zabbix 触发器表达式详解 http://www.linuxidc.com/Linux/2017-03/141921.htm

Ubuntu 16.04 下安装部署 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140395.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143527.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2983字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中