发明内容
针对上述现有通信过程中产生告警所存在的问题和不足,本发明的目的是提供一种可很好将非根源报警抑制的基于抑制计数的告警抑制方法。
本发明是这样实现的:一种基于抑制计数的告警抑制方法,包括以下步骤,
1)故障点产生告警并生成告警数据,将该告警数据抑制计数和当前计数均置0,并判断该告警数据是否需要进行防抖处理,若需要,进入步骤2),否则进入步骤3);
2)将告警加入到防抖告警队列,循环判断防抖告警队列中已有的告警数据与该告警数据的关系,若原有告警抑制该告警数据,则将该新增告警的防抖抑制计数加1,若新增告警抑制原有告警则将原有告警的防抖抑制计数加1;若防抖告警防抖时间到,则进入步骤3),并将被该防抖告警抑制的告警的抑制计数减1;
3)将告警加入到当前告警队列,循环判断新加入告警与当前告警队列中的告警之间的抑制关系,若新增告警抑制原有告警,则将原有告警的当前抑制计数加1,进入步骤4);当前告警队列中告警结束时,循环判断该结束告警与其他告警之间的抑制关系,并将被该结束告警抑制的告警的抑制计数减1,进入步骤4);
4)判断当前告警队列中告警的计数之和,若为0则上报该告警;若计数之和由0变为1,则上报该告警的结束告警,否则不上报。
优选地,所述防抖告警结束防抖时间到,将告警从防抖队列中删除并将被该防抖告警抑制的告警的抑制计数减1具体为,遍历防抖告警队列和当前告警队列,将被该防抖告警抑制的告警的抑制计数减1。
优选地,所述步骤4)还包括,
a、将所述结束告警安其对应的告警类型加入到相应的告警队列,若原告警为防抖告警,则遍历防抖告警队列和当前告警队列,将被该结束告警对应的原告警抑制的告警防抖抑制计数分别减1,将该结束告警上报到当前告警队列,并从防抖队列中删除;进入b;若原告警为当前告警,进入b;
b、将所述原当前告警删除,并遍历当前告警队列,将被该结束告警对应的原告警抑制的告警当前抑制计数分别减1。
优选地,该方法还包括,若新增告警与两队列中告警无抑制关系,则直接放入相应队列,不作其他处理。
优选地,所述防抖处理是指与通信信号相关的告警为避免告警的误检测,当告警产生持续一段时间之后,才产生该告警;告警结束持续一段时间之后才结束该告警的处理。
通过本发明的使用,可在设备告来实现对告警种类繁多、抑制关系复杂的告警进行很好的抑制。本发明首先上报根源告警,在根源告警结束后才上报相对于根源告警次等级别告警。本发明实现简单,方便实用。
具体实施方式
本发明包括以下步骤:
1、故障点产生告警时,产生告警对象,将抑制计数和当前计数都设置为0;
2、判断该告警是否需要进行告警防抖处理;
3、如果告警需要进行防抖处理,则将告警加入到防抖告警队列,否则直接加入到当前告警队列;
4、当告警加入到防抖队列时,先循环判断防抖告警队列中已有的告警和新增告警的关系,如果原有告警抑制新增告警则将新增告警的防抖抑制计数加1,如果新增告警抑制原有告警则将原有告警的防抖抑制计数加1;
5、当告警在防抖队列中防抖时间到,要将该告警加入到当前告警队列;
6、当告警从防抖队列中删除的时候,要遍历防抖告警队列,将被删除告警抑制的告警的防抖抑制计数减1,同时也要遍历当前告警队列进行同样的处理;
7、当告警加入到当前告警队列时,先循环判断新加入告警与已经存在的告警之间的抑制关系,如果新增告警抑制原有告警,则将原有告警的当前抑制计数加1,再判断原有告警的计数(当前告警抑制计数和防抖告警抑制计数)之和是否是由0变为1,如果是则上报该告警的结束告警;
8、当前告警结束时,循环判断欲结束告警与其他告警之间的抑制关系,如果其他告警被即将结束的告警抑制,则将其他告警的当前告警抑制计数减1。
如图1、图2所示,本发明的每个告警都具有两个抑制计数——防抖抑制计数和当前抑制计数,当故障点产生告警时,默认的两个抑制计数都为0。如果该告警需要进行防抖处理,则将告警加入到防抖告警队列,在加入之前要循环比较防抖告警队列中已经存在的告警与新增告警的抑制关系,如果新增告警抑制原有告警,则将原有告警的防抖抑制计数加1,如果原有告警抑制新增告警则将新增告警的防抖抑制计数加1,如果两者不具有抑制关系,则防抖抑制计数都不作变化,遍历比较完成后,将新增告警加入到防抖告警队列;如果该告警不需要进行防抖处理则将告警直接加入到当前告警队列中,同样在加入前也要循环判断当前告警队列中的原有告警和新增告警之间的抑制关系,如果原有告警抑制新增告警,则将新增告警的当前抑制计数加1,如果新增告警抑制原有告警则将原有告警的当前抑制计数加1,这时候如果原有告警的两个抑制计数之和由0增加为1,则上报原有告警的结束告警;如果原有告警和新增告警之间不具有抑制关系,则两者的抑制计数都不作变化,当比较完成后,将新增告警加入到当前告警队列,如果新增告警此时的两个抑制计数之和为0,即新增告警没有被其他告警抑制,则上报该告警,否则不上报。另外,当告警防抖处理完成后,加入到当前告警队列中,此时按照上述加入到当前告警队列的方式进行处理。当告警结束时,产生结束告警,该结束告警若需要进行防抖处理,则经过防抖时间后从防抖告警队列中将原告警中删除,结束告警进入到当前告警队列。这里,从防抖队列删除原告警时要循环判断防抖告警队列中的其他告警与原告警的抑制关系,如果原告警抑制其他告警则将其他告警的防抖抑制计数减1,同时也要循环判断当前告警队列中的告警与该原告警的抑制关系,如果该原告警抑制当前告警则将当前告警的防抖抑制计数减1,如果此时当前告警的抑制计数之和为0则上报该当前告警产生;当结束告警上报到当前告警时,也要循环判断处于当前队列中的原告警与其他当前告警的抑制关系,如果该原告警抑制其他当前告警则将该当前告警的当前抑制计数减1,如果此时该当前告警的抑制计数之和为0则上报该当前告警,当比较完成后上报结束告警并从当前队列中将结束告警对应的原告警删除。如果告警不需要防抖,则直接上报到当前告警队列,此时按照上述结束告警上报到当前告警队列的处理方式处理。
这里,告警抑制是指当一个故障产生多个告警时,仅上报最根源的告警。告警防抖指为避免告警的误检测,当告警产生持续一段时间之后,才产生该告警;告警结束持续一段时间之后才结束该告警的处理。防抖时间指告警防抖处理持续的时间。告警防抖队列指处于防抖状态的告警所组成的队列。当前告警指已经产生还没有结束的告警。当前告警队列指当前告警所组成的队列。抑制计数指标识对该告警具有抑制关系的告警计数。原告警指当产生结束告警时,与之对应先前产生的告警,称之为结束告警的原始告警。
图1中的相应处理指:如果要加入的是防抖告警队列,则不作任何处理;如果要加入的是当前告警队列,则要判断,如果告警的抑制计数从0增加为1则上报该告警的结束告警到上层管理者如网管。图2中的相应处理1是指:在当前告警队列中判断如果告警抑制计数为0则上报该告警到上层管理者,在防抖告警队列中不用任何处理。图2中的相应处理2是指:如果要加入的是防抖告警队列,除了要判断防抖告警队列中其他告警的抑制关系外,也要循环判断与当前告警的抑制关系,将被该告警抑制的当前告警的防抖抑制计数减1;如果要加入的为当前告警队列则不用任何处理。
下面以一个例子来详细说明本发明。
假设出现故障之前单板没有告警存在。
设备故障,假设依次产生A、B、C三个告警并依次结束,这三个告警存在抑制关系:C抑制A、B,B抑制A,并且这三个告警都需要防抖且防抖时间为开始2.5秒,结束10秒。
首先产生A告警,该告警要进行防抖处理,所以要先加入告警防抖队列,加入时按照上述步骤来进行处理,但是队列中没有其他告警,所以这里实际上没有引起告警抑制计数的变化,这时告警A就会进入防抖时间。
在连续产生A的情况下,就会产生B告警,该告警也需要防抖,所以也要按照本实施例前述步骤4的方式来处理,这时候告警防抖队列中存在告警A,而且B告警抑制A告警,这时候A的防抖抑制计数加1,变为1。
当产生C的时候,也要进行防抖处理,而且因为C抑制A、B,所以导致B的防抖抑制计数为1,A的防抖抑制计数为2。而告警C的防抖抑制计数为0。
经过2.5秒后告警A结束防抖处理,加入到当前告警队列,在加入当前告警队列的时候按照上述步骤7进行处理,但是由于当前告警中不存在告警,所以不会引起该告警当前抑制计数的变化,还是为0。但是该告警的防抖抑制计数为2,所以该告警不会上报。
当B告警同样经过2.5秒后防抖处理结束进入当前告警队列时,按照步骤7的处理方式,处理后告警A的当前抑制计数为1,防抖抑制计数为1,不上报,而告警B由于防抖抑制计数为1,也不上报。
当告警C经过2.5秒后结束防抖处理,进入当前告警队列同上处理,结果是告警C的防抖抑制计数和当前告警抑制计数都为0,上报;而告警B的当前告警抑制计数为1,防抖抑制计数为0,不上报;告警A的当前告警抑制计数为2,防抖抑制计数为0,不上报。这样在故障产生之后,产生了3个告警,但是只上报了一个根源告警C。
假设C首先结束,这时候首先创建一个结束告警,加入到告警防抖队列(实际为直接将结束告警对应的原告警的防抖状态修改为结束防抖),在告警防抖队列中经过10秒后结束防抖处理,此时要将该结束告警从防抖队列中删除,并上报结束告警到当前队列,在删除时要循环判断结束告警与防抖告警队列中其他告警抑制关系,因为C抑制B、A,所以要将告警B、A的防抖抑制计数分别减1(B防抖抑制计数为0,A防抖抑制计数为1),然后在判断该告警与当前告警队列中的其他告警之间的抑制关系,同样因为C抑制B、A,所以要将当前告警队列中的告警B、A的防抖抑制计数分别减1。
在将结束告警C上报到当前告警队列时,首先找到结束告警C对应的原告警,并把原告警在当前队列中删除,上报结束告警C到上层管理者(如网管),然后循环判断当前告警队列中的其他告警和结束告警C的抑制关系,因为C抑制B、A,所以要将告警B、A的当前告警抑制计数分别减1,这样告警B的抑制计数之和为0,上报告警B,而此时告警A的抑制计数为2(当前告警抑制计数为1,防抖告警抑制计数为1),还是不上报,从而本发明实现了在根源告警C结束后,上报相对于根源告警C次等级别告警(告警B)的功能。