发明内容
本发明的目的在于提供一种实现通讯设备故障集中告警处理的方法,该方法可以实现对设备中的所有故障源进行分析、归类,并确定归属于哪个单板上的告警代理来管理。
为了解决上述目的,本发明的技术方案包括如下步骤:
A、对设备管理系统中的故障上报策略进行预设置;
B、当故障源检测到故障发生或者恢复时,将检测结果通过一回调函数上报告警代理,且所述回调函数根据所述故障上报策略更新所述故障发生或者恢复所对应的故障值;
C、所述告警代理每隔固定时间遍历所有故障源所对应的故障信息,并根据各个所述故障上报策略,判断为集中告警并上报所述设备管理系统。
其中,所述方法中,所述故障上报策略包括故障计数门限、故障持续时间及故障发生频率。
其中,当所述故障上报策略以故障计数门限进行告警上报时,所述步骤B包括如下处理:如果所述回调函数中包含的故障信息是故障发生,且当前故障值小于回调函数内故障计数门限所对应的门限值时,则更新当前故障值;当所述故障恢复后,则对故障值清零。
其中,所述步骤C中包括:
C1、当所述告警代理遍历查询时,如果当前故障值大于等于回调函数内故障计数门限所对应的门限值,且前一次故障值小于该门限值时,则所述告警代理向所述设备管理系统上报告警故障发生;如果当前故障值为零,且前一次故障值不为零,则所述告警代理向所述设备管理系统上报告警故障恢复;
C2、所述告警代理更新前一次故障值及回调函数中故障现在状态所对应的数值。
其中,当所述故障上报策略以故障持续时间进行告警上报时,所述步骤B包括如下处理:如果所述回调函数中包含的故障信息是故障发生,且当前故障值为零时,则更新当前故障值为当前时间所对应的数值;当所述故障恢复后,则对故障值清零。
其中,所述步骤C中包括:
C1、所述告警代理遍历查询时将获取一当前系统时间,如果该当前系统时间所对应的数值与当前故障值之差大于等于回调函数内故障持续时间所对应的门限值,且前一次故障值为零时,则所述告警代理向所述设备管理系统上报告警故障发生,并更新前一次故障值;如果当前故障值为零,且前一次故障值不为零,则所述告警代理向所述设备管理系统上报告警故障恢复,并更新前一次故障值;
C2、所述告警代理更新回调函数中故障现在状态所对应的数值。
其中,当所述故障上报策略以故障发生频率进行告警上报时,所述步骤B包括如下处理:如果所述回调函数中包含的故障信息是故障发生,则更新当前故障值;当所述故障恢复后,则对故障值清零。
其中,所述步骤C中包括:
C1、所述告警代理遍历查询时,如果当前故障值与前一次故障值之差大于等于回调函数内故障发生频率所对应的门限值,且故障现在状态没有上报,则所述告警代理向所述设备管理系统上报告警故障发生;如果当前故障值与前一次故障值之差小于回调函数内故障发生频率所对应的门限值,且所述故障现在状态已上报,则所述告警代理向所述设备管理系统上报告警故障恢复;
C2、所述告警代理更新前一次故障值及回调函数中故障现在状态所对应的数值。
与现有技术相比,采用本发明方法,具有一下优点:
1、通过集中对故障源进行查询,极大的简化了各个故障源的逻辑处理;
2、由于告警代理是在固定时间集中处理,可以防止告警风暴和告警振荡的产生;
3、如果将来某个故障源的告警策略发生改变,也可以统一在一个地方处理,比如,修改该故障对应的记录中的故障上报策略,减少对整个系统的波及;
4、由于故障源上报故障不是通过发消息的方式,这样可以减轻CPU负荷和内存资源的占用;在各个单板上的故障源数量有限的情况下,可以忽略轮询带来的负荷增加。
具体实施方式
下面结合附图,对本发明的较佳实施例作进一步详细说明。
请参阅附图1,本发明提供了一种实现通讯设备故障集中告警处理的方法,其实现流程包括如下步骤:
110、设备管理系统上电的时候,对每一个故障源属性中的故障上报策略进行预设置,并通过安装在设备管理系统上的一回调函数通知所述设备管理系统所有故障源上报准备程序就绪;
120、当故障源检测到故障产生或者恢复时,将检测结果通过回调函数上报告警代理后,且该回调函数根据故障源的故障上报策略更新所述故障发生或者恢复所对应的故障值,即及时更新该故障源计数信息或者发生时间所对应的故障值;
130、所述告警代理每隔固定时间遍历所有故障源所对应的故障信息,并根据所述故障上报策略,判断是否上报给所述设备管理系统主控板上的前台代理。
其中,步骤110中,所述故障源属性还包括故障级别、告警门限及告警应对方法;所述故障上报策略包括故障计数门限、故障持续时间及故障发生频率。
基于故障源定义通用的属性和方法,在本实施例中,以32位CPU上的C语言为例,对回调函数进行说明:
typedef struct tagFaultItem
{
DWORD dwFaultCode ;/*故障码*/
DWORD dwBitFlag ;/*故障上报策略*/
DWORD dwFaultValue;/*故障发生次数或时间,回调中更新,
告警代理只读*/
DWORD dwLastValue;/*前一次检查时故障发生次数或时
间,告警代理读写*/
PFUNC pfunHandle;/*故障发生或者上报时的应对方
法,可以为NULL*/
WORD wValVe;/*故障上报门限,根据dwBitFlag有不
同含义*/
BYTE byLevel;/*故障级别,系统规划,与应用相关*/
BYTE byStatus;/*0-无故障;1-故障发生但未上报;2-故障
已上报*/
}TFaultItem,*PTFaultItem。
各个成员的含义:
dwFaultCode:代表该故障的故障码;
dwBitFlag:故障上报策略,如表示故障计数、故障持续时间、故障频率等;
dwFaultValue:故障发生次数或者时间,简称故障值,回调函数中依据dwBitFlag更新,告警代理只读所述故障值(结构体成员采用自然边界对齐,为节省系统开销,可不考虑不同任务间的变量互斥问题);
dwLastValue:前一次故障值,每次告警代理轮询并做处理后,依据dwBitFlag更新为dwFaultValue;
pfunHandle:故障上报时的应对方法,系统策略,与应用相关;
wValve:故障上报的门限值,比如计数门限、时间门限、频率门限等;
byLevel:故障级别,系统规划,与应用相关;
byStatus:故障现在的状态,告警代理中使用和更新。
其中,对于本发明所述集中告警处理方法,依据故障上报策略(dwBitFlag)的区分,可以采用多种上报策略实现设备集中告警管理;其实现种类如下:
第一种,当所述故障上报策略依据故障计数门限进行告警上报
所述步骤120包括如下处理:
如果所述回调函数中包含的故障信息是故障发生,且当前故障值小于回调函数内故障计数门限所对应的门限值(dwFaultValue<wValve),则当前故障值(dwFaultValue)相应地加1;当故障恢复后,将该故障恢复所对应的故障值(dwFaultValue)清零。
相应地,所述步骤130中包括:
首先,所述告警代理查询所有故障源所对应的故障信息时,如果当前故障值大于等于回调函数内故障计数门限所对应的门限值(dwFaultValue>=wValve),且前一次故障值小于该门限值(dwLastValue<wValve),则上报告警故障发生;如果当前故障值(dwFaultValue)为零,且前一次故障值(dwLastValue)不为零时,则所述告警代理向所述设备管理系统上报告警故障恢复;
最后,所述告警代理更新前一次故障值(dwLastValue)和回调函数中故障现在状态(byStatus)所对应的数值。
第二种,当所述故障上报策略依据故障持续时间进行告警上报
所述步骤120包括如下处理:
如果所述回调函数中包含的故障信息是故障发生,且当前故障值(dwFaultValue)为零时,则更新当前故障值(dwFaultValue)为当前时间所对应的数值;当故障恢复后,则将该故障恢复所对应的故障值(dwFaultValue)清零。
相应地,所述步骤130中包括:
所述告警代理查询所有故障源所对应的故障信息时,首先,获取当前系统时间(dwCurTime),回调函数中,如果当前系统时间所对应的数值与当前故障值之差大于等于回调函数内故障持续时间所对应的门限值((dwCurTime-dwFaultValue)>=wValve),且前一次故障值(dwLastValue)为零时,则上报告警故障发生,同时更新前一次故障值(dwLastValue);如果当前故障值(dwFaultValue)为零,且前一次故障值(dwLastValue)不为零时,则上报告警故障恢复,同时更新dwLastValue;
最后,所述告警代理更新故障现在状态(byStatus)所对应的数值。
第三种,当所述故障上报策略依据故障发生频率进行告警上报所述步骤120包括如下处理:
如果所述回调函数中包含的故障信息是故障发生,则当前故障值(dwFaultValue)相应地加1;当故障恢复后,则将该故障恢复所对应的故障值(dwFaultValue)清零。
相应地,所述步骤130中包括:
首先,所述告警代理查询查询所有故障源所对应的故障信息时,如果当前故障值与前一次故障值之差大于等于回调函数内故障发生频率所对应的门限值((dwFaultValue-dwLastValue)>=wValve),且故障现在状态(byStatus)没有上报,即其所对应的数值不等于2,则上报告警故障发生;如果当前故障值与前一次故障值之差小于回调函数内故障发生频率所对应的门限值((dwFaultValue-dwLastValue)<wValve),且故障现在状态(byStatus)以上报,即其所对应的数值等于2,则所述告警代理向所述设备管理系统上报告警故障恢复;
最后,所述告警代理更新前一次故障值(dwLastValue)和故障现在状态(byStatus)所对应的数值。
综上所述,本发明的通讯设备中对故障集中处理的告警管理方法,应用于设备中各个单板上的告警代理;各个故障源只负责发现故障的产生和恢复,通过回调函数的方式告诉告警代理,不需要考虑告警风暴、告警策略等;告警回调函数中通过改写全局变量的方式只记录告警次数或者时间,不需要发消息给告警代理;告警代理每隔固定时间,例如是1秒钟查询各个故障源的故障信息,并根据事先设定的故障上报策略集中处理设备告警。
采用上述这种告警管理方法,具有以下优点:
1、通过集中对故障源进行查询,极大的简化了各个故障源的逻辑处理;
2、由于告警代理是在固定时间集中处理,可以防止告警风暴和告警振荡的产生;
3、如果将来某个故障源的告警策略发生改变,也可以统一在一个地方处理,比如,修改该故障对应的记录中的故障上报策略,减少对整个系统的波及;
4、由于故障源上报故障不是通过发消息的方式,这样可以减轻CPU负荷和内存资源的占用;在各个单板上的故障源数量有限的情况下,可以忽略轮询带来的负荷增加。
总之,本发明并不限于上述实施方式,任何熟悉此技术者,在不脱离本发明的精神和范围内,都应该落在本发明的保护范围之内。