zabbix 告警收敛(Python)研究价值高!

之前再和朋友一起讨论之后,从一个牛逼公司得来的整体shell告警方案,今天看来这个比较牛逼的Python技术再次刷新了我对Python重新认识!!

在多个运维技术分享中都会谈及到“告警风暴”这个词,即在大规模网络发生异常的时候,报警量激增,运维伙伴手机在1个多小时中不断的接受报警通知,这样有可能会造成“狼来了”等一系列的问题,不但对运维人员造成了困扰,给排查问题带了不小的难度。某族同样也困扰过,但在建设了告警平台,对告警进行合并等操作,由原来的月报警8000+ 降低至800条。

一、收敛架构图

①所有产生告警均由zabbix调用脚本推入缓存redis当中

②分析系统将在规定时间(1分钟)内去redis中拉取数据,根据定义好的一系列规则进行,合并、分析或直接丢弃,并存入分析平台数据库,以便供历史查询。

③根据预先定义好的规则将报警通过定义好的方式发送给相关人员。

二、对zabbix 进行设置

1.zabbix Actions

对Actions进行特殊设置,Default subject极为重要,是识别收敛的标示。

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 参数就可以了。

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.环境安装
pip安装

pip类似RedHat里面的yum,安装Python包非常方便装

一、pip的安装(方法一)
cd  /usr/local/src

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

tar -xzvf pip-1.5.4.tar.gz

cd pip-1.5.4

python setup.py install

如果上述出现ImportError: No module named setuptools 的解决方案

cd  /usr/local/src

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz --no-check-certificate

tar zxvf setuptools-0.6c11.tar.gz

cd setuptools-0.6c11

python setup.py build

python setup.py install

二、pip安装(方法二)

cd /usr/local/src

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate -O ./get-pip.py

python get-pip.py

三、pip更换国内源地址

cd 

mkdir .pip

vim .pip/pip.conf

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com

redis安装文档

#安装python、mysql、redis模块
pip install redis
pip install mysql-python
yum install gcc python-devel
2.脚本部署

脚本文件下载地址

①dbread.py--数据库查询函数:接收事件id参数,将zabbix数据库内的数据切割分片并返回告警信息

②operation.py --操作函数:接收dbread.py返回的告警信息,进行告警合并,告警压缩处理。并返回处理结果

③weixin.py--发送微信告警通知函数:将处理结果发送至指定运维人员

④allpolice.py--综合函数:将①②③整合起来,定时每1分钟执行一次

四、定时任务

crontab -e

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

五、最终效果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

关于分区表的move操作(r2笔记90天)

关于分区表的move操作还是很值得深究的一个问题。如果分区表中含有lob字段,难度还会加大。 对于普通的表而言,做move操作室理所当然,oracle提供的方...

3395
来自专栏非著名程序员

看大神如何玩转微信小程序日历插件?

2073
来自专栏hotqin888的专栏

beego web提高后端速度的尝试——改循环查询数据库为递归算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

2202
来自专栏腾讯技术工程官方号的专栏

高并发性能调试经验分享(上)

4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?遗憾的是知乎很...

1K3
来自专栏蓝天

Linux下可以替换运行中的程序么?

今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”。结果朋友发来一个执行结...

1822
来自专栏BIT泽清

贷款应用被拒如何应对?怎么上架(含隐藏开关)的马甲包

      突然间的2.1大礼包成了一个重灾区,苹果加大了中国区的审核力度。但其实归根结底,会触犯到这个大礼包的App很大部分或者说几乎都是和这个关键词挂钩的 ...

43410
来自专栏文渊之博

参数化(三):参数嗅探

    在之前的随笔中我提到过参数嗅探,这是非常重要的概念。下面我们深入的研究一下参数嗅探…     首先我们知道批处理可以是参数化的或者非参数化。参数化的批处...

1797
来自专栏北京马哥教育

Python库大全,建议收藏留用!

3293
来自专栏架构之路

高并发请求的缓存设计策略

前几天,我司出了个篓子。当时正值某喜闻乐见的关键比赛结束,一堆人打开我司app准备看点东西,结果从来没有感受到过这么多关注量的该功能瞬间幸福到眩晕,触发了熔断,...

1582
来自专栏架构师之路

mysql并行复制降低主从同步延时的思路与启示

一、缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重。 为...

3847

扫码关注云+社区

领取腾讯云代金券