请选择 进入手机版 | 继续访问电脑版

IT运维管理,ITIL,ITSS,ITSM,ISO20000-ITIL先锋论坛

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

艾拓先锋
搜索
查看: 171|回复: 0

[Zabbix专区] 如何使Zabbix 告警收敛

[复制链接]
来自- 广东广州

参加活动:0

组织活动:12

发表于 2017-8-23 17:21:23 | 显示全部楼层 |阅读模式 来自- 广东广州
在多个运维技术分享中都会谈及到“告警风暴”这个词,即在大规模网络发生异常的时候,报警量激增,运维伙伴手机在1个多小时中不断的接受报警通知,这样有可能会造成“狼来了”等一系列的问题,不但对运维人员造成了困扰,给排查问题带了不小的难度。某族同样也困扰过,但在建设了告警平台,对告警进行合并等操作,由原来的月报警8000+ 降低至800条。
0?wx_fmt=png.jpg
听了若干的技术“吹bi”大会,都在说用了某某的东西后就多么多么的厉害,耳朵都快听出茧子了。真正的把干货分享出来的很少,只能犄角旮旯里面抠出来自己需要的东西,然后回来自己琢磨。说的也是人家也不会把核心做法告诉你,不过也算是给了个方向。闲话不多说,自己琢磨出来的收敛的方法,不管low不low总算把问题解决了,也算是成长路上的突破。

一、收敛架构图
①所有产生告警均由zabbix调用脚本推入缓存redis当中
②分析系统将在规定时间(1分钟)内去redis中拉取数据,根据定义好的一系列规则进行,合并、分析或直接丢弃,并存入分析平台数据库,以便供历史查询。
③根据预先定义好的规则将报警通过定义好的方式发送给相关人员。
0?wx_fmt=png.jpg
告警收敛架构
二、对zabbix 进行设置
1.zabbix Actions
对Actions进行特殊设置,Default subject极为重要,是识别收敛的标示。
0?wx_fmt=png.jpg
Actions 配置
  • Default subject
  • {EVENT.ID}_1
  • Default message
  • triggervalue|{TRIGGER.VALUE}#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}
  • Recovery subject
  • {EVENT.ID}_0
  • Recovery message
  • triggervalue|{TRIGGER.VALUE}#hostname|{HOSTNAME1}#ipaddress|{IPADDRESS}#hostgroup|{TRIGGER.HOSTGROUP.NAME}#triggernseverity|{TRIGGER.NSEVERITY}#triggername|{TRIGGER.NAME}#triggerkey|{TRIGGER.KEY1}#triggeritems|{ITEM.NAME}#itemvalue|{ITEM.VALUE}#eventid|{EVENT.ID}
2.Media types
  • 这里只需要传递subject 参数就可以了。

0?wx_fmt=png.jpg
Media 配置
police.py--报警函数:zabbix告警是调用此函数,将事件id推入redis。
redis 安装查看第三部分
/usr/local/zabbix/share/zabbix/alertscripts/police.py
#!/usr/bin/env python
#coding:utf-8

import redis
import sys

subject=sys.argv[1]
r = redis.StrictRedis(host='**.**.**.**', port=6379)
r.set(subject,subject)


三、操作部分
1.环境安装
[url=]pip安装文档[/url]
[url=]redis安装文档[/url]
[url=][/url]
#安装python、mysql、redis模块
pip install redis
pip install mysql-python
yum install gcc python-devel


2.脚本部署
[url=]脚本文件下载地址[/url]
①dbread.py--数据库查询函数:接收事件id参数,将zabbix数据库内的数据切割分片并返回告警信息
②operation.py --操作函数:接收dbread.py返回的告警信息,进行告警合并,告警压缩处理。并返回处理结果
③weixin.py--发送微信告警通知函数:将处理结果发送至指定运维人员
④allpolice.py--综合函数:将①②③整合起来,定时每1分钟执行一次
#文件分布
mkdir -p /data/police
├── police
│   ├── dbread.py│   
├── allpolice.py│   
├── operation.py│   
├── send.log│   
└── weixin.py

四、定时任务

crontab -e
#告警收敛定时检测#
*/1 * * * * python /data/police/allpolice.py >> /data/police/send.log


五、最终效果
0?wx_fmt=png.jpg
以上为告警收敛效果。




原创: DevOps

本版积分规则

选择云运维时代的王牌讲师-长河老师,助你轻松入门ITIL Foundation培训课程

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1|网站地图

Baidu

GMT+8, 2018-11-15 08:23 , Processed in 0.203318 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表