美文网首页
zabbix 告警收敛

zabbix 告警收敛

作者: xyz098 | 来源:发表于2019-06-10 17:38 被阅读0次

思路

zabbix告警|告警收敛 - 简书

  1. 将产生的告警事件对应的subjectID(对应一条告警事件)、actionID(对应告警接收组)推送到redis
  2. 每隔1分钟获取redis存储的ID查询zabbix数据库,同时清空redis已经读取过的key
  3. 将获取的所有告警事件,根据监控项 [triggerkey](或IP地址)分组
  4. 分组后的信息发送时,判断该组告警的条数,同时对详细信息去重

验证

分组后信息格式

  • 下面展示的是两组监控项,非关键内容省略
[
    [    # 第一组 system.cpu.load[percpu,avg5] 
        {
            'triggerkey': 'system.cpu.load[
                percpu,
                avg5
            ]',
            'actionid': '22'
        },
        {
            'triggerkey': 'system.cpu.load[
                percpu,
                avg5
            ]',
            'actionid': '22'
        }
    ],
    [   # 第二组 vm.memory.size[available]
        {
            'triggerkey': 'vm.memory.size[
                available
            ]',
            'actionid': '22'
        },
        {
            'triggerkey': 'vm.memory.size[
                available
            ]',
            'actionid': '22'
        },
        {
            'triggerkey': 'vm.memory.size[
                available
            ]',
            'actionid': '22'
        }
    ]
]

实现代码

zabbix_alarm

alarmGroupCompress.py      # 计划任务1分钟执行一次,拉取告警
EmailSend                  # 笔记邮件发送
sendRedis.py               # zabbix调用自动以脚本存入告警
  • 实现分组
    # 根据监控项分组
    for triggerkey in triggerkeylist:
        for problem in problemlist:
            if problem['triggerkey']==triggerkey:
                sorts.append(problem)
        if len(sorts)>=2:
            alarminfo.append(sorts)
        else:
            problemlist1.append(sorts)     
        sorts=[]  # 告警事件分组,同一组的放到一个切片中

    # 根据IP地址分组 ( 如果不能根据监控项分类 )
    for problem in problemlist1:
        if problem[0]['ipaddress'] not in hostlist:
            hostlist.append(problem[0]['ipaddress'])
    for host in hostlist:
        for problem in problemlist1:
            if problem[0]['ipaddress']==host:
               sorts.append(problem[0])
        alarminfo.append(sorts)      # 每个ip一个分组
        sorts=[]
  • 实现收敛
 for info in alarminfo:
        hostlist=''
        hostgroup=''
        triggernamelist=''

        # 每组告警的条数统计
        infonum=len(info)
        for host in info:
            triggername=host['triggername']
            itemvalue=host['itemvalue']
            ipaddr=host['ipaddress']
            triggeritems=host['triggeritems']
            triggernseverity=host['triggernseverity']
            hostinfo=host['hostname']+':'+host['ipaddress']+'\n'
            # 针对告警要发送的详细信息做收敛
            if host['hostgroup'] not in hostgroup:
                hostgroup+=host['hostgroup']+'\n'
            if host['hostname'] not in hostlist:
                hostlist+=host['hostname']+',    '
            if host['triggername'] not in triggernamelist:
                triggernamelist+=host['triggername']+'\n'
        
        # 每组告警条数统计发送规则
        if infonum >= 2 and infonum <= 6:        
            message='【'+revel[str(triggernseverity)]+'】'+'\n告警数量:  '+str(infonum)+'项\n'+hostlist+'\n相关项目:  \n'+triggernamelist+'\n'+'分析时间:  '+currenttime
            messagelist.append(message)
        elif infonum > 6:
            message='【'+revel[str(triggernseverity)]+'】'+'\n当前存在大量相同告警项,可能发生网络故障!\n详情请咨询运维人员!\n'+'告警主机:  '+str(infonum)+'台\n'+'告警项目:  '+triggername+'\n'+'分析时间: '+currenttime
            messagelist.append(message)
        # 一条也发送
        else:  
            message='【'+revel[str(triggernseverity)]+'】'+'\n告警主题:  '+triggername+'\n告警项目: '+ triggeritems +'\n告警主机:  '+ipaddr+'\n当前值:  '+itemvalue+'\n分析时间:  '+currenttime
            messagelist.append(message)

相关文章

  • 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/nbktfctx.html