zabbix使用kafka收集告警来统计

为什么需要收集告警信息

问题1、在zabbix问题中,超过1000条记录时,显示的总量为999,具体数量就不可知了,那我们经常要做报告,1年多少次告警。

问题2、分类不可统计,我们的主机组少的有7-8个,多的10+、20+,那么多如何像使用sql group by一样快速的一张表呈现如:

主机组 主机 故障次数

问题3、告警内容不可自定义,在问题界面中,我们看到的是如下所示,那我告警的想加个主机组这一列不过分吧,这个按照官方指导还要修改源码,太耗时间了。

时间 严重性 信息 主机 问题 最新值 持续时间 确认 动作 标记

问题4、当告警的时候,告警值很重要,这个在如果在zabbix上要去历史上翻找,相当麻烦,在问题中显示的又是当前的最新值,没有意义,所以这个需要采集。

问题5、当遇到大量告警喷发的时候,不管是发邮件、短信、钉钉都能让你头脑爆炸,更别说领导了。

以上几个问题都是我在生出中经常碰到的问题,所以生出了告警信息的统一管理的念头,想到就干。

告警统计架构

这整体流程如下:
1、当zabbix触发告警,会调用zabbix 告警动作;
2、zabbix 告警动作会触发zabbix server上的kafka发送信息脚本;
3、告警信息会发送至kafka server;
4、kafka 消费脚本会拉去kafka server中的告警信息,存入mysql;
在这里插入图片描述

几个关键设置点

1、告警的内容,这个解答 上面问题3 ,在zabbix web上 配置动作

告警信息设置

{"eventid":"jty{EVENT.ID}","group":"{TRIGGER.HOSTGROUP.NAME}","host":"{HOSTNAME1}","ip":"{HOST.IP}","alarm_time":"{EVENT.DATE} {EVENT.TIME}","trigger_name":"{TRIGGER.NAME}","alarm_value":"{ITEM.LASTVALUE}","alarm_type":"alarm","alarm_level":"{TRIGGER.SEVERITY}","description":"{HOST.DESCRIPTION}"}

告警信息设置
恢复信息设置

{"eventid":"jty{EVENT.ID}","recover_time":"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}","recover_value":"{ITEM.LASTVALUE}","alarm_type":"recover"}

恢复信息设置
2、告警的脚本和传参

脚本名称:kafka_Producer #这个脚本放在/usr/lib/zabbix/alertscripts/kafka_Producer
脚本参数:
kafka1:9092 #这里是在hosts中做个解析,是kafka server的地址
zabbixVm #这个是消费topic,相当于一个key
{ALERT.MESSAGE} #这个是消息的内容。

关于脚本和源码都放在

https://gitee.com/fangfhm/Enterprise-zabbix-monitoring/tree/master/zabbix-kafka

告警的脚本和传参

数据库告警效果

在这里插入图片描述

原创文章 3 获赞 2 访问量 163

猜你喜欢

转载自blog.csdn.net/qq_34303259/article/details/106068863
今日推荐