zabbix 告警 | 告警收敛

作者: _简_述_ | 来源:发表于2016-12-30 19:47 被阅读4971次

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

听了若干的技术“吹bi”大会,都在说用了某某的东西后就多么多么的厉害,耳朵都快听出茧子了。真正的把干货分享出来的很少,只能犄角旮旯里面抠出来自己需要的东西,然后回来自己琢磨。说的也是人家也不会把核心做法告诉你,不过也算是给了个方向。闲话不多说,自己琢磨出来的收敛的方法,不管low不low总算把问题解决了,也算是成长路上的突破。


一、收敛架构图

①所有产生告警均由zabbix调用脚本推入缓存redis当中
②分析系统将在规定时间(1分钟)内去redis中拉取数据,根据定义好的一系列规则进行,合并、分析或直接丢弃,并存入分析平台数据库,以便供历史查询。
③根据预先定义好的规则将报警通过定义好的方式发送给相关人员。


告警收敛架构

二、对zabbix 进行设置

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

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 参数就可以了。
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.环境安装
pip安装文档
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分钟执行一次

*#文件分布
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

五、最终效果

告警收敛效果

相关文章

  • zabbix 告警 | 告警收敛

    在多个运维技术分享中都会谈及到“告警风暴”这个词,即在大规模网络发生异常的时候,报警量激增,运维伙伴手机在1个多小...

  • zabbix 告警收敛

    思路 zabbix告警|告警收敛 - 简书 将产生的告警事件对应的subjectID(对应一条告警事件)、acti...

  • zabbix告警收敛

    由于报警短信、邮件太多导致运维人员精神高度紧张、时间长了容易对重要告警忽略,引起不必要的麻烦。为了解决这个问题我在...

  • zabbix 配置 telgram 告警

    zabbix 配置 telgram 告警 zabbix 配置 Zabbix-in-Telegram 国内推荐使用丁...

  • zabbix邮件告警设置

    1.准备zabbix服务器安装完毕 使用3.2+版本 2.创建邮件告警脚本(不用zabbix自带邮件告警) 下载软...

  • ZABBIX 告警

    https://www.zabbix.com/documentation/3.2/manual/config/no...

  • Prometheus告警收敛

    什么是告警收敛?在对节点或服务的日常监控中,收到的警报太多,如一下就几十封,或者很多不必要的邮件发来,容易导致人很...

  • zabbix设置微信告警,亲测可用!!!

    zabbix微信告警 前面写了一个zabbix微信告警的,用的我的企业号,后来发现用的人太多消息都超过限制了,应大...

  • 利用pandas模块从告警表中筛选出特定站点的告警

    利用pandas模块从告警表中筛选出特定站点的告警 周末新开了些VIP站点,需要将这些站点产生的告警尽快收敛,那首...

  • zabbix内存溢出

    1.告警具体内容 root@zabbix~]# tail -f /var/log/zabbix/zabbix_se...

网友评论

  • 7a8a0713eb42:有没有简单的解决方案,就是对同一报警事件限定发邮件次数 即可 中小企业没有办法通过二次开发或者增加redis层或者购买第三方插件来解决的
  • f1a40c335a29:如果是IP相同也需要收敛呢,能否给个方向,万分感谢
    dfcccb14c7f3:@Big_dimple 如果事发突然,并不是有计划的操作,设置维护状态也晚一步了吧
    Big_dimple:同一个IP很多报警,可以认定这个服务在做什么操作,为什么不直接调用api设置维护状态呢
  • ISPA:文中提到 /usr/local/zabbix/share/zabbix/alertscripts/police.py ,请问 police.py 在何处将其触发?
    1e5478f5e924:我把用微信方式换成邮箱方式,怎么报警的内容没有读到redis中,redis中的值都是空的 r = redis.StrictRedis(host='127.0.0.1', port=6379), 这个r.keys()这个空的
    ISPA:@_简_述_ 我已自己搞定,成功触发脚本。
    _简_述_:@ISPA 如果使用过zabbix会比较了解,这个路径是zabbix调用媒介路径,该脚本是如zabbix检测到故障就调用,会给该脚本传入3个参数,我这只接受一个参数,就是特殊的标题。然后写入redis,定时脚本去分析就行了。我这个确实比较复杂和low,就是抛个砖,希望引出你们更好的方法。
  • ISPA:只要是好文,不吝惜打赏
    _简_述_:@ISPA 感谢鼓励:grin:

本文标题:zabbix 告警 | 告警收敛

本文链接:https://www.haomeiwen.com/subject/nhwauttx.html