美文网首页zabbix
zabbix告警收敛

zabbix告警收敛

作者: 孙高猛 | 来源:发表于2020-05-09 15:46 被阅读0次

由于报警短信、邮件太多导致运维人员精神高度紧张、时间长了容易对重要告警忽略,引起不必要的麻烦。为了解决这个问题我在网上开始搜索告警收敛相关的文章尝试解决,最终受益于"简述"大神的这篇文章 "zabbix 告警 | 告警收敛" 的思路,于是基于大神的代码进行了部分修改并已应用于我们公司环境中一年以上。

下面为大家分享下整体的流程以及代码。

一、架构图

①产生的所有告警均由zabbix的actions调用脚本推入缓存redis当中;
②脚本将每分钟(crontab)去redis中拉取数据,根据定义好的一系列规则进行分析、合并;
③根据预先定义好的规则将报警通过定义好的方式发送给相关人员;


zabbix收敛流程图.png

二、设置Zabbix

1. 配置Media types

  • 仅传递 subject
  • 我这里定义了3个Mediatype 分别用于发送邮件、短信、企业微信(具体可自行调整) (3个除了Name不一样之外其他配置(Script name/Script parameters)保持一致)
  • 脚本 “zabbix-police/police.py” 主要功能是将Subject(Eventid)写入Redis,后面会写到


    Media type 配置
    多个Media types

2. 配置Actions

  • 我这里以每个Trigger severity一个Actions举例。(可以根据不同的HostGroup或者其他条件自行配置多个actions)
  • Default subject 之所以用 "{EVENT.ID}_1、{EVENT.ID}_0"为的是保持唯一性,1代表故障、0代表恢复
  • Default sbject
{EVENT.ID}_1
  • Default message
triggervalue|{TRIGGER.VALUE}
hostname|{HOSTNAME1}
ipaddress|{IPADDRESS}
hostgroup|{TRIGGER.HOSTGROUP.NAME}
triggerstatus|{TRIGGER.STATUS}
triggerseverity|{TRIGGER.SEVERITY}
triggername|{TRIGGER.NAME}
triggerkey|{TRIGGER.KEY1}
triggeritems|{ITEM.NAME}
itemvalue|{ITEM.VALUE}
eventid|{EVENT.ID}
action|{ACTION.NAME}
eventage|{EVENT.AGE}
eventtime|{EVENT.DATE} {EVENT.TIME}
  • Recovery subject
{EVENT.ID}_0
  • Recovery message
triggervalue|{TRIGGER.VALUE}
hostname|{HOSTNAME1}
ipaddress|{IPADDRESS}
hostgroup|{TRIGGER.HOSTGROUP.NAME}
triggerstatus|{TRIGGER.STATUS}
triggerseverity|{TRIGGER.SEVERITY}
triggername|{TRIGGER.NAME}
triggerkey|{TRIGGER.KEY1}
triggeritems|{ITEM.NAME}
itemvalue|{ITEM.VALUE}
eventid|{EVENT.ID}
action|{ACTION.NAME}
eventage|{EVENT.AGE}
eventtime|{EVENT.DATE} {EVENT.TIME}
多个Actions
Actions-条件配置
Actions-Operations配置
Actions-Recovery配置

三、配置 Zabbix 服务器

1. 安装环境

#下载代码
/etc/zabbix/alertscripts
git clone https://github.com/sungaomeng/zabbix-police.git
#安装依赖
yum install gcc python-devel
pip install -r zabbix-police/requirements.txt

2. 脚本

#文件分布
[root@zabbix-server01 alertscripts]# tree zabbix-police 
zabbix-police
├── police.py    #Action调用此函数, 用于将EventID写入Redis
├── allpolice.py #综合函数, 总入口, 用于整合其他脚本, 定时被Crontab调用
├── dbread.py    #数据库查询函数, 用于查询Redis、Mysql, 获取EventID、获取告警具体信息、Mediatype脚本对应关系、查询告警接收人等信息
├── police.conf  #定义配置文件, 包括mysql、redis、wechat、email、sms、logfile等配置
├── modconf.py   #加载配置函数, 用于加载配置文件
├── operation.py #操作函数, 用于1. 接收dbread.py返回的告警、恢复信息, 进行合并、压缩处理, 并返回处理结果 2. 定义各告警发送调用函数
├── send_wechat.py #告警发送-微信函数
├── send_sms.py    #告警发送-短信函数
├── send_email.py  #告警发送-邮件函数
├── requirements.txt #依赖
└── README.md

3. Crontab

[root@zabbix-server01 zabbix-police]# crontab -l 
* * * * * /usr/bin/python /etc/zabbix/alertscripts/zabbix-police/allpolice.py 

四、告警效果

zabbix告警收敛-邮件 zabbix告警收敛-企业微信告警
zabbix告警-短信

相关文章

  • zabbix 告警 | 告警收敛

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

  • zabbix告警收敛

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

  • zabbix 告警收敛

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

  • zabbix 配置 telgram 告警

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

  • Zabbix自定义监控(三) 告警收敛

    如何利用zabbix进行自定义监控,相信看过我文章的同学已经摸清了套路。但是在丰富监控的同时,我们也发现告警越来越...

  • zabbix内存溢出

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

  • zabbix邮件告警设置

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

  • ZABBIX 告警

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

  • Prometheus告警收敛

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

  • Docker 容器 时区 及容器语言设置

    今天把zabbix 和grafana迁移到容器上跑了,发现zabbix告警的时间相差了8小时和zabbix页面报错...

网友评论

    本文标题:zabbix告警收敛

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