前言
在多个运维技术分享中都会谈及到“告警风暴”这个词,即在短时间内批量发送告警信息,为了避免重复告警以及过滤掉无效告警,免去运维人员查看重复告警内容的烦恼。于是想办法对告警信息进行收敛。
原理
1、将产生的告警事件对应的triggerID(对应一个触发器)、actionID(对应告警接收组)、hostIP(主机IP)推送到mysql
2、每隔1小时获取mysql中triggerID、actionID、hostIP唯一数据的告警时间,如果告警时间和当前时间相差大于一小时,则进行告警。
使用步骤
1.zabbix配置
2.上代码
接收到第一个参数
if __name__ == '__main__':
params = sys.argv[1]
get_records(params)
对数据进行解析
def get_records(params):
data = result_to_json(params)
ip = data['IP']
trigger_id = data['TRIGGER.ID']
action_id = data['ACTION.ID']
now = datetime.datetime.now