前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix 告警收敛(Python)研究价值高!

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

作者头像
老七Linux
发布2018-05-31 12:10:44
4.2K1
发布2018-05-31 12:10:44
举报

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

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

一、收敛架构图
代码语言:javascript
复制
①所有产生告警均由zabbix调用脚本推入缓存redis当中

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

③根据预先定义好的规则将报警通过定义好的方式发送给相关人员。
二、对zabbix 进行设置
1.zabbix Actions

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

Default subject
代码语言:javascript
复制
{EVENT.ID}_1
Default message
代码语言:javascript
复制
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
代码语言:javascript
复制
{EVENT.ID}_0
Recovery message
代码语言:javascript
复制
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 安装查看第三部分

代码语言:javascript
复制
/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的安装(方法一)
代码语言:javascript
复制
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 的解决方案

代码语言:javascript
复制
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安装(方法二)
代码语言:javascript
复制
cd /usr/local/src

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

python get-pip.py
三、pip更换国内源地址
代码语言:javascript
复制
cd 

mkdir .pip

vim .pip/pip.conf

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

redis安装文档

代码语言:javascript
复制
#安装python、mysql、redis模块
pip install redis
pip install mysql-python
yum install gcc python-devel
2.脚本部署

脚本文件下载地址

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

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

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

④allpolice.py--综合函数:将①②③整合起来,定时每1分钟执行一次
四、定时任务
代码语言:javascript
复制
crontab -e

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

五、最终效果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/11/18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、收敛架构图
  • 二、对zabbix 进行设置
    • 1.zabbix Actions
      • Default subject
        • Default message
          • Recovery subject
            • Recovery message
            • 2.Media types
              • 1.环境安装
                • pip安装
                  • 一、pip的安装(方法一)
                  • 二、pip安装(方法二)
                  • 三、pip更换国内源地址
                    • 2.脚本部署
                    • 四、定时任务
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档