一种告警持久化方法和设备与流程

文档序号:12134583阅读:220来源:国知局
一种告警持久化方法和设备与流程

本发明实施例涉及通信技术领域,特别涉及一种告警持久化方法和设备。



背景技术:

在LTE(Long Time Evolution,长期演进)通信网络中,eNB(Evolved NodeB,演进型基站)等通信设备会随机的上报告警到网管系统,网管对告警进行一系列处理后,会把告警持久化到数据库中。

而网管每收到一条告警,就会打开一个数据库链接,并基于打开的数据库链接进行告警持久化,待告警持久化完毕后,释放链接。

由于现有技术中的告警持久化的方式中,针对每条告警每次都打开一个数据库连接进行告警的持久化,这样会存在以下问题:

一、每次获取一个数据库连接后只能持久化一条告警就释放,在告警风暴的场景下,就需要频繁的获取和释放数据库连接,会存在性能低下的问题。

二、在告警风暴的场景下,会造成瞬间消耗大量数据库连接的问题,即使使用了固定数量的数据库连接池,也会造成告警在内存中的积压;如果持续时间过长,告警积压太多导致占用较大内存,会造成网管系统性能低下,使系统产生问题的概率变大。

三、在告警风暴的场景下,告警持久化会形成瓶颈,会导致告警实时性问题的出现,告警无法实时持久化到数据库中。

可见现有技术中的方式无法很好解决在告警风暴下场景下的告警持久化问题。



技术实现要素:

针对现有技术中缺陷,本发明提出了一种告警持久化方法,包括:

接收告警;

确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式;

将转换格式后的告警持久化到数据库中。

优选的,所述确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中,具体包括:

确定接收到的告警的类型,并判断与接收到的告警的类型不同,且与接收到的告警的告警源以及告警原因相同的其他告警在与其他告警的类型对应的告警队列中是否存在;

若判断结果为否,则将接收到的告警放入与其类型对应的告警队列中;

若判断结果为是,则将被放入对应告警队列中的所述其他告警持久化到数据库中,并将接收到的告警放入与其类型对应的告警队列中。

优选的,所述数据库可接收的数据格式包括:结构化查询语言SQL格式;

所述将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式,具体包括:

基于各告警队列的预设的休眠时间确定需要进行格式转换的告警;

将需要进行格式转换的告警转换为数据库可接受的SQL格式。

优选的,所述将转换格式后的告警持久化到数据库中,具体包括:

判断是否存在尚未持久化到数据库的以文件形式存储的告警;

若判断结果为是,判断存储文件形式的告警的告警文件的大小是否超过阈值,若超过,则将告警文件中存储的告警清空,并将转换格式后的告警存入所述告警文件,并以SQL*PLUS方式批量持久化到数据库中;若不超过, 则将转换格式后的告警按照时间的先后顺序并入所述以文件形式存储的告警文件,并将合并后的告警文件以SQL*PLUS方式批量持久化到数据库中;

若判断结果为否,则将转换格式后的告警以JDBC方式批量持久化到数据库中。

优选的,还包括:

在接收到告警之后,判断预设时间段内接收到的告警的数量是否大于阈值;

若判断结果为是,则确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

若判断结果为否,则以单条持久化告警的方式持久化接收到的告警。

本发明还提出了一种告警持久化设备,包括:

接收模块,用于接收告警;

分类模块,用于确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

转换模块,用于将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式;

持久化模块,用于将转换格式后的告警持久化到数据库中。

优选的,所述分类模块,具体用于:

确定接收到的告警的类型,并判断与接收到的告警的类型不同,且与接收到的告警的告警源以及告警原因相同的其他告警在与其他告警的类型对应的告警队列中是否存在;

若判断结果为否,则将接收到的告警放入与其类型对应的告警队列中;

若判断结果为是,则将被放入对应告警队列中的所述其他告警持久化到数据库中,并将接收到的告警放入与其类型对应的告警队列中。

优选的,所述数据库可接收的数据格式包括:结构化查询语言SQL格式;

所述转换模块,具体用于:

基于各告警队列的预设的休眠时间确定需要进行格式转换的告警;

将需要进行格式转换的告警转换为数据库可接受的SQL格式。

优选的,所述持久化模块,具体用于:

判断是否存在尚未持久化到数据库的以文件形式存储的告警;

若判断结果为是,判断存储文件形式的告警的告警文件的大小是否超过阈值,若超过,则将告警文件中存储的告警清空,并将转换格式后的告警存入所述告警文件,并以SQL*PLUS方式批量持久化到数据库中;若不超过,则将转换格式后的告警按照时间的先后顺序并入所述以文件形式存储的告警文件,并将合并后的告警文件以SQL*PLUS方式批量持久化到数据库中;

若判断结果为否,则将转换格式后的告警以JDBC方式批量持久化到数据库中。

优选的,该设备还包括:

处理模块,用于在接收到告警之后,判断预设时间段内接收到的告警的数量是否大于阈值;

若判断结果为是,则确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

若判断结果为否,则以单条持久化告警的方式持久化接收到的告警。

与现有技术相比,本发明实施例通过确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式;将转换格式后的告警持久化到数据库中;解决了告警风暴场景下,单条持久化告警的方式对数据库造成较大压力,性能低下的问题;同时基于预设时间段内接收的告警数量实现持久化方式的切换,以便适应各种不同的情况,同时兼顾了告警持久 化的性能和实时性的要求,提高了持久化的实时性

附图说明

图1为本发明实施例提出的一种告警持久化方法的流程示意图;

图2为本发明实施例提出的一种告警分类方法的示意图;

图3为本发明实施例提出的一种转换格式后的告警持久化的示意图;

图4为本发明实施例提出的一种批量持久化与单条持久化切换方法的示意图;

图5为本发明实施例提出的一种告警持久化设备的结构示意图。

具体实施方式

如背景技术,现有技术中的方案无法应对告警风暴下的告警持久化,为此本发明实施例公开了一种告警持久化方法,用于实现在告警风暴下进行告警持久化,如图1所示,包括以下步骤:

步骤101、接收告警。

步骤102、确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中。

确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中,具体包括:

确定接收到的告警的类型,并判断与接收到的告警的类型不同,且与接收到的告警的告警源以及告警原因相同的其他告警在与其他告警的类型对应的告警队列中是否存在的告警队列中是否存在;若判断结果为否,则将接收到的告警放入与其类型对应的告警队列中;若判断结果为是,则将被放入对应告警队列中的所述其他告警持久化到数据库中,并将接收到的告警放入与其类型对应的告警队列中。

具体的,告警的类型可以分为活跃告警类型,变更告警类型,消除告警 类型,为此,其对应的告警队列可以为活跃告警队列,变更告警队列,消除告警队列,其中,不同类型的告警的告警源以及告警原因可以相同,例如有告警1和告警2,其中告警1的告警源为告警源1,告警原因是A,告警2的告警源为告警源1,告警原因是A,在此情况下,才会继续确定告警1和告警2的类型,例如告警源1是活跃告警类型,而告警2是消除告警类型。在此情况下,如图2所示,当接收到告警,例如接收到的是告警3之后,确定告警3的类型为活跃告警类型,对应的告警队列为活跃告警队列,且告警3的告警源为告警源1,告警原因是A,在此情况下,由于一共只存在三种告警队列,因此会判断变更告警队列和消除告警队列(告警3对应的告警队列以外的其他告警队列)中是否会存在与告警3的告警源相同(也即告警源为告警源1),以及告警原因相同(也即告警原因是A)的其他告警。

若有,例如在消除告警队列中存在告警4和告警5,告警4和告警5的告警源都为告警源1,且告警原因都是A,在此情况下,则立即对消除告警队列中的所有告警(包括告警4和告警5)执行持久化处理,也即立即将告警4和告警5转换为SQL格式并进行持久化,而不再需要经过预设的休眠时间后再进行处理,以此保证在时间上先存储在与其他告警的类型对应的告警队列中的,且与接收到的告警的告警源以及告警原因相同的其他告警能得到及时处理。

而若没有时,则将接收到的告警放入与其类型对应的告警队列中,例如接收到的告警为告警3,其类型为活跃告警类型,则将其存储在活跃告警队列中,后续执行步骤103、对告警队列中的告警进行相应处理。

步骤103、将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式。

数据库可接收的数据格式包括:结构化查询语言SQL格式;

将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的 数据格式,具体包括:

基于各告警队列的预设的休眠时间确定需要进行格式转换的告警;

将需要进行格式转换的告警转换为数据库可接受的SQL格式。

具体的,由于面对的是告警风暴,也即会在一段时间内出现很多告警,为此各告警队列中被放入的告警会经过一个预设的休眠时间才进行处理,各告警队列设置的休眠时间可以相同,也可以不相同,考虑到设置休眠时间太长影响告警的实时性;设置休眠时间太短起不了批量持久化功能的效用;具体的例如可以设置为:5秒;而具体的,以5秒为例来进行说明,从告警队列中提取经过休眠时间为5秒的告警,并将提取出的告警转换为数据库可接受的数据格式,例如数据库可以接受SQL(Structured Query Language,结构化查询语言)格式,为此就可以将告警转换为SQL格式,当然除此以外,还有很多别的数据库可接受的格式,也都是可以的,并不限于SQL格式。

在此,以SQL格式为例,例如接收到的活跃告警1的原本为:

Alarm@{alarmDn:PLMN=1,AREA=1,ENB=1;specificReason:1001000;alarmType:Report;neType:ENB;},经过转换后,变为SQL格式,具体为:

insert into fm_alarm_act(alarmDn,specificReason,neType)values(‘PLMN=1,AREA=1,ENB=1’,’1001000’,’ENB’)

再例如,接收到的变更告警2为:

Alarm@{alarmDn:PLMN=1,AREA=1,ENB=1;specificReason:1001000;alarmType:Change;neType:ENB;level:2},经过转换后,变为SQL格式,具体为:

Update fm_alarm_act set level=‘2’where alarmDn=’PLMN=1,AREA=1,ENB=1’and specificReason=’1001000’and neType=’ENB’;

以及,接收到的清除告警3为:

Alarm@{alarmDn:PLMN=1,AREA=1,ENB=1;specificReason:1001000;alarmType:Clear;neType:ENB;},经过转换后,变为SQL格式,具体为:

delete from fm_alarm_act where alarmDn=’PLMN=1,AREA=1,ENB=1’ and specificReason=’1001000’and neType=’ENB’;

insert into fm_alarm_his(alarmDn,specificReason,neType)values(‘PLMN=1,AREA=1,ENB=1’,’1001000’,’ENB’)。

步骤104、将转换格式后的告警持久化到数据库中。

将转换格式后的告警持久化到数据库中,具体包括:

判断是否存在尚未持久化到数据库的以文件形式存储的告警;若判断结果为是,判断存储文件形式的告警的告警文件的大小是否超过阈值,若超过,则将告警文件中存储的告警清空,并将转换格式后的告警存入告警文件,并以SQL*PLUS(与数据库进行交互的工具)方式批量持久化到数据库中;若不超过,则将转换格式后的告警按照时间的先后顺序并入以文件形式存储的告警文件,并将合并后的告警文件以SQL*PLUS方式批量持久化到数据库中;若判断结果为否,则将转换格式后的告警以JDBC(Java Data Base Connectivity Java,数据库连接)方式批量持久化到数据库中。

具体的,如图3所示,由于与数据库的连接有可能会发生中断,这样会导致告警无法持久化到数据库,在此情况下,会先将告警以文件的形式存储在告警文件中,后续待连接正常,将告警文件持久化到数据库中,当然,若是告警文件过大,超过预设的阈值,该阈值的设置类型和性能密切相关。例如ORACLE数据库,此门限值可以设置为:200M;则将告警文件中的以文件形式存储的告警清空,以便将经过格式转换后的告警存入告警文件,并以SQL*PLUS方式批量持久化到数据库中,或者告警文件没有超过阈值,此时按照时间的先后顺序将转换格式后的告警存储在告警文件中,也即与原以文件形式存储的告警合并形成新的告警文件,并以SQL*PLUS方式批量持久化到数据库中;当然若是之前没有尚未持久化到数据库的以文件形式存储的告警,则转换格式后的告警以JDBC方式批量持久化到数据库中。

另外,考虑到在持久化的过程中涉及到的SQL格式,有可能是错误的,在此情况下,在此情况下,可以剔除格式错误导致持久化失败的告警再次进 行持久化,一直到处理完成所有的告警为止,同时还可以进行错误的提示,以便进行更正。

本发明所面临的技术场景是在告警风暴的情况,而在告警正常上报的场景下,如果还是按照批量持久化告警的方案,这样会无谓的消耗时间,造成告警的实时性问题,为此,如图4所示,在接收到告警之后,判断预设时间段内接收到的告警的数量是否大于阈值;若判断结果为是,则确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;若判断结果为否,则以单条持久化告警的方式持久化接收到的告警。

以此,如果告警数量大于门限数量值,则启动批量持久化告警流程,否则,进入单条持久化告警流程,其中告警单条持久化的流程具体为:直接把告警转换为SQL语句并用JDBC的方式入库即可,若入库失败则将告警放入文件中,也即以文件的形式进行存储。

为了对本发明进行进一步的说明,本发明实施例还公开了一种告警持久化设备,如图5所示,包括:

接收模块501,用于接收告警;

分类模块502,用于确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

转换模块503,用于将各告警队列中经过一个预设的休眠时间的告警转换为数据库可接收的数据格式;

持久化模块504,用于将转换格式后的告警持久化到数据库中。

所述分类模块502,具体用于:

确定接收到的告警的类型,并判断与接收到的告警的类型不同,且与接收到的告警的告警源以及告警原因相同的其他告警在与其他告警的类型对应的告警队列中是否存在;

若判断结果为否,则将接收到的告警放入与其类型对应的告警队列中;

若判断结果为是,则将被放入对应告警队列中的所述其他告警持久化到数据库中,并将接收到的告警放入与其类型对应的告警队列中。

所述数据库可接收的数据格式包括:结构化查询语言SQL格式;

所述转换模块503,具体用于:

基于各告警队列的预设的休眠时间确定需要进行格式转换的告警;

将需要进行格式转换的告警转换为数据库可接受的SQL格式。

所述持久化模块504,具体用于:

判断是否存在尚未持久化到数据库的以文件形式存储的告警;

若判断结果为是,判断存储文件形式的告警的告警文件的大小是否超过阈值,若超过,则将告警文件中存储的告警清空,并将转换格式后的告警存入所述告警文件,并以SQL*PLUS方式批量持久化到数据库中;若不超过,则将转换格式后的告警按照时间的先后顺序并入所述以文件形式存储的告警文件,并将合并后的告警文件以SQL*PLUS方式批量持久化到数据库中;

若判断结果为否,则将转换格式后的告警以JDBC方式批量持久化到数据库中。

该设备还包括:

处理模块,用于在接收到告警之后,判断预设时间段内接收到的告警的数量是否大于阈值;

若判断结果为是,则确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;

若判断结果为否,则以单条持久化告警的方式持久化接收到的告警。

通过本发明提出的上述实施例,通过确定接收到的告警的类型,并基于不同的类型将告警放入与类型对应的告警队列中;将各告警队列中经过一个 预设的休眠时间的告警转换为数据库可接收的数据格式;将转换格式后的告警持久化到数据库中;解决了告警风暴场景下,单条持久化告警的方式对数据库造成较大压力,性能低下的问题;同时基于预设时间段内接收的告警数量实现持久化方式的切换,以便适应各种不同的情况,同时兼顾了告警持久化的性能和实时性的要求,提高了持久化的实时性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1