CN101938366A - 一种实现关联告警的方法及装置 - Google Patents
一种实现关联告警的方法及装置 Download PDFInfo
- Publication number
- CN101938366A CN101938366A CN2009100886045A CN200910088604A CN101938366A CN 101938366 A CN101938366 A CN 101938366A CN 2009100886045 A CN2009100886045 A CN 2009100886045A CN 200910088604 A CN200910088604 A CN 200910088604A CN 101938366 A CN101938366 A CN 101938366A
- Authority
- CN
- China
- Prior art keywords
- alarm
- association
- rule
- source
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现关联告警的方法及装置。本发明方案中,确定存在与源告警信息相匹配的告警关联规则时,根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理。本发明提供的关联告警实现方案简单灵活,极易实施,无需对前台告警源的告警基本流程进行任何更改,原始告警的入库和历史告警导出功能不受任何影响;对已经开发实现的告警管理基本功能也不会产生任何影响,无需依赖已有的架构。通过这种方法,完善了通信***的告警管理功能,代价小,扩展性强。
Description
技术领域
本发明涉及告警处理技术,特别是指一种实现关联告警的方法及装置。
背景技术
通信***中,告警管理单元的基本功能主要是接收通信***中各个告警源发送的告警消息,对告警消息进行分析整理、存储,最终向网管平台发送,使得网管平台能够对通信***的运行情况进行实时监控。
在告警管理中,一些告警虽然各不相同,但却可能是相关的,将这些告警关联起来便能够准确定位告警原因。另外,单个告警所表示的信息可能会比较模糊,通过将多个告警联系起来,便可能会使与告警相关的信息明确起来。这就是关联告警。可见,关联告警在告警管理中具有非常大的作用。
虽然大多数通信***都能够实现告警管理的基本功能,但是由于通信***的告警管理单元在前期并没有加入基于关联告警的处理。这样,当前如何引入关联告警就成为一个迫切需要解决的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现关联告警的方法及装置,简单灵活地在通信***中实现关联告警。
为达到上述目的,本发明的技术方案是这样实现的:
一种实现关联告警的方法,该方法包括:确定存在与源告警信息相匹配的告警关联规则时,根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理。
该方法进一步包括:预先设置用于描述告警之间的关联关系的告警关联规则;所述告警关联规则至少包括:告警显示屏蔽规则、或告警显示解屏蔽规则、或告警转换规则、或告警恢复转换规则、或以上任意的组合。
所述告警关联规则的描述方式为:文本格式、或XML、或正则表达式。
该方法进一步包括:预先设置用于描述告警对象之间的关联关系的告警对象树,具体包括:设置告警对象,确定告警对象的对象属性;根据对象属性设置告警对象类型,基于所述对象类型码设置告警对象树;针对所述告警对象树上具有关联关系的每一对节点设置查询语句,所述查询语句组成查询依赖关系。
所述具有关联关系的每一对节点为:告警对象树上的各父子节点;或者,告警对象树上的各父子节点和需要强关联的每一对节点。
所述根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,包括:
根据源告警对象在查询依赖关系中索引至源告警对象在告警对象树上的对应节点,然后根据查询依赖关系在告警对象树上确定该节点的各关联节点;根据所述告警关联规则在各关联节点中确定与源告警对象相关联的告警关联对象;或者,
根据源告警对象在查询依赖关系中索引至源告警对象在告警对象树上的对应节点,然后根据查询依赖关系在告警对象树上确定该节点的各关联节点;根据所述告警关联规则无法在各关联节点中确定与源告警对象相关联的告警关联对象时,通过查询依赖关系确定源告警对象在告警对象树上的各关联路径,然后结合所述告警关联规则,通过确定出的关联路径确定与源告警对象相关联的告警关联对象。
所述告警对象树的节点上设置有虚拟告警时,所述根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理,包括:
a、判断所述告警关联对象上是否存在符合所述告警关联规则的虚拟告警,如果不存在,则生成虚拟告警,并初始化该虚拟告警的子告警位图结构,然后执行步骤b;如果存在,则直接执行步骤b;
b、根据所述告警关联规则,设置虚拟告警的子告警位图。
所述进行关联告警处理之后,进一步包括:关联告警主界面与所述告警对象树对应,发生告警或告警恢复时,显示或隐藏所述告警对象树的对应节点。
一种实现关联告警的装置,该装置包括:规则匹配单元,用于确定存在与源告警信息相匹配的告警关联规则时,向对象关联单元和关联告警单元分别提供匹配的告警关联规则;对象关联单元,用于根据所述告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,并向关联告警单元提供该告警关联对象;关联告警单元,用于根据所述告警关联规则对告警关联对象的告警进行关联告警处理。
所述装置还包括:存储单元,用于存储设置的告警关联规则和告警对象树。
本发明提供的方案是基于告警对象树和告警关联规则的关联告警综合处理方案,在通信***中,网管收到告警和告警恢复后能够及时分析告警的关联关系,并基于告警对象树根据告警关联规则进行关联告警处理,提供了一种快速定位告警的新方案,具有良好的实时性,而非后处理方式。本发明提供的关联告警实现方案简单灵活,极易实施,无需对前台告警源的告警基本流程进行任何更改,原始告警的入库和历史告警导出功能不受任何影响;对已经开发实现的告警管理基本功能也不会产生任何影响,无需依赖已有的架构。通过这种方法,完善了通信***的告警管理功能,代价小,扩展性强。
本发明中涉及的告警关联规则和告警对象树均可以灵活定制,能够广泛适用于所有网元,具有非常大的实用价值。通过本发明提供的关联告警处理方案,能够减少无效或次要告警对日常运营维护的干扰,大大降低通信***的运营维护成本,有效提升竞争力。
另外,本发明中还可以将关联告警以可视化告警树的方式呈现给用户,能够直观地向网管用户展现关联告警的信息。本发明提供的方案对虚拟告警的关联告警处理也同样适用,具有很高的实用性。
附图说明
图1为本发明中实现关联告警流程示意图;
图2为本发明中告警对象树结构示意图;
图3为本发明中关联告警主界面示意图;
图4为本发明中特定告警对象的关联示意图;
图5为本发明中告警显示屏蔽规则处理流程示意图;
图6为本发明中告警显示解屏蔽规则处理流程示意图;
图7为本发明中基于虚拟告警的告警转换规则处理流程示意图;
图8为本发明中实现关联告警的装置结构示意图。
具体实施方式
在关联告警中,如果能够从网管用户的角度来设置告警及告警对象之间的关联关系,运用告警之间的关联规则分析告警数据,在网管平台只呈现根告警或主要告警,就能够减少无效或次要告警对日常运营维护的干扰,大大降低通信***的运营维护成本。基于这样的思想,本发明中提出一种基于告警对象树和告警关联规则的关联告警综合处理方案。
图1为本发明中实现关联告警流程示意图,如图1所示,实现关联告警的具体处理过程包括:
步骤101~步骤102:网管接收告警源的告警信息、即源告警信息,根据设置的告警关联规则,判断是否存在与收到的源告警信息相匹配的告警关联规则,如果存在,则继续执行步骤103;如果不存在,则直接结束当前关联告警流程。所述告警关联规则用于描述告警之间的关联关系。源告警信息可以是源告警,也可以是源告警恢复。
步骤103:网管确定匹配的告警关联规则。
步骤104:网管根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象。所述告警对象树用于描述告警对象之间的关联关系。以上所述告警源即为一个告警对象。
步骤105:网管根据匹配的告警关联规则,对告警关联对象的告警进行关联告警处理,如生成告警关联对象的告警、隐藏告警关联对象的告警等,结束当前关联告警流程。
根据以上描述可见,告警关联规则和告警对象树是本发明中关联告警处理的实现基础,因此,下面首先描述告警关联规则和告警对象树的具体设置。
通过配置文件或网管需求设置告警关联规则,告警关联规则用于描述告警之间的关联关系。多个告警关联规则组成了告警关联规则库。告警关联规则库中是一系列的告警关联规则,具体可以包括:告警显示屏蔽规则、告警显示解屏蔽规则、告警转换规则、告警恢复转换规则。其中,告警显示屏蔽规则用于描述某一告警发生时需要屏蔽显示的对应告警,即隐藏告警关联对象;告警显示解屏蔽规则用于描述某一告警恢复时需要解除显示屏蔽的对应告警,即显示被隐藏的告警关联对象;告警转换规则用于描述某一告警发生时需要生成的对应告警;告警恢复转换规则用于描述某一告警恢复发生时需要恢复生成的对应告警。本发明中,可以基于告警码来设置告警关联规则。
下面给出一些告警关联规则的示例,并给出对应的说明。网管可以只设置一种类型的告警关联规则,如只设置告警显示屏蔽规则;也可以设置多类型的告警关联规则,如只设置告警显示屏蔽规则和告警转换规则。
(1)告警显示屏蔽规则
B→(A):告警码为B的告警发生,屏蔽告警码为A的所有告警的显示
D→(B,C):告警码为D的告警发生,屏蔽告警码为B和C的所有告警的显示
I→(H,D):告警码为I的告警发生,屏蔽告警码为H和D的所有告警的显示
(2)告警显示解屏蔽规则
D→(B,C):告警码为D的告警恢复,解除告警码为B和C的所有告警的显示屏蔽。
G→(H,D,E,F):告警码为G的告警恢复,解除告警码为H、D、E和F的所有告警的显示屏蔽
I→(H,D):告警码ID的告警恢复,解除告警码为H和D的所有告警的显示屏蔽
(3)告警转换规则
(|A)→B:告警码为A的告警发生,生成告警码为B的关联根告警
(&B,&*C)→D:告警码为B的告警发生,并且所有告警码为C的告警发生,生成告警码为D的关联根告警
(|H,|D,|*E,|F]→G:告警码为H的告警发生、或告警码为D的告警发生、或所有告警码为E的告警发生、或告警码为F的告警发生,生成告警码为G的关联根告警
(&H,&D)→I:告警码为H的告警发生、并且告警码为D的告警发生,生成告警码为I的关联根告警
(4)告警恢复转换规则
(&A)→B:告警码为A的告警恢复,恢复告警码为B的关联根告警
(|B,|*C)→D:告警码为B的告警恢复、或所有告警码为C的告警恢复,恢复告警码为D的关联根告警
(&H,&D,&*E,&F]→G:告警码为H的告警恢复、并且告警码为D的告警恢复、并且所有告警码为E的告警恢复、并且告警码为F的告警恢复,恢复告警码为G的关联根告警
(|H,|D)→I:告警码为H的告警恢复、或告警码为D的告警恢复,恢复告警码为I的关联根告警
本发明中,将告警关联规则中→左侧的告警设置为主告警,将→右侧的告警设置为子告警。例如,对于告警关联规则D→(B,C),D为主告警,B和C为子告警。
下面以TDSCDMA RNC的告警为原型,给出一个具体实例,参见图2,告警对象类型B表示“公共信道”对象类型、C表示“主载频”对象类型、D表示“小区”对象类型。对“公共信道”对象类型B的设置有“公共信道异常告警”,对应告警码为0x00010001;对“主载频”对象类型C的设置有“主载频不可用告警”,对应告警码为0x00020002;“小区”对象类型D设计有“小区退出服务告警”,对应告警码为0x00030003。设置告警关联规则如下:
告警转换规则:(|*0x00010001,|0x00020002)→0x00030003
告警显示屏蔽规则:0x00030003→(0x00010001,0x00020002)
告警恢复关联规则:(&*0x00010001,&0x00020002)→0x00030003
告警显示解屏蔽规则:0x00030003→(0x00010001,0x00020002)
这里,“|”表示或,“&”表示与,“*”表示全部告警对象,即与告警关联对象相关的所有告警对象的集合。如(|*0x00010001,|0x00020002)→0x00030003表示所有告警码为0x00010001的告警发生、或告警码为0x00020002的任一告警(或只有一个告警)发生,产生告警码为0x00030003的关联告警。
对于关联告警处理中的所有源告警,如果前台的告警源能够检测,则仍由告警源上报告警。以上告警关联规则通常只生成和恢复告警源无法检测、或网管用户又要求关注的告警,如虚拟告警。
告警关联规则的设置可以参考以上本文采用文本格式进行描述,也可以采用XML、正则表达式等方式进行描述。设置告警关联规则时,可结合设置的告警对象树进行设置,对于实例化的告警对象树,可以将所有告警码依次挂到告警对象树的对应节点上,即所述节点表示的告警对象能够产生对应告警码的告警,然后从主告警(也可称为根告警)归属的节点出发,在其父子节点的关联路径上找到需要关联的告警码,逐一设置出各告警关联规则。
下面描述通过配置文件或网管需求设置告警对象树,告警对象树用于描述告警对象之间的关联关系。设置告警对象树的具体过程包括:
步骤A1:设置告警对象。
每个告警均会归属到一个对象,如端口、链路、小区等等,这些可以产生告警的对象即为告警对象。设置告警对象时,通过对象ID(OBJID)能够唯一标识一个告警对象,以区别于其他告警对象。
各告警对象具有相应的对象属性,根据对象属性设置告警对象类型,每个告警对象类型分配一个对象类型码,用于唯一标识该告警对象类型。由于告警对象类型是根据对象属性确定的,因此,每个告警对象类型均具有特定的对象属性,这些对象属性构成了告警对象的结构体关系。告警对象类型与该告警对象类型的对象结构关系是一一对应的。
步骤A2:设置告警对象树。
本发明中,基于对象类型码来设置告警对象树。告警对象类型与告警对象树的节点是一对一的关系。一般而言,一个确定的通信***中,告警对象的父子关系、即关联关系是确定的,即告警对象树是相对固定的。
告警对象在告警对象树中的归属关系是非常复杂的。对于告警对象树上的任意一个节点,其父节点(告警对象类型)和子节点(告警对象类型)均可能有多个。父子节点是指在告警对象树上直接相连的两个节点。本发明中,为避免关联关系过于复杂,可设置告警对象树上的任意一个节点,最多有6个父节点和6个子节点。
由于告警都是在实际应用中发生的,因此,关联告警处理中所涉及的告警对象、告警对象树都是实例化后的。图2为本发明中告警对象树结构示意图,如图2所示,箭头指向的一端为父节点,其中,粗的虚线表明在对应实例中一个父节点可能有多个子节点;细的实线表明在对应实例中一个父节点只有一个子节点。针对实例化的某个具体告警对象而言,在告警对象树的任意一条路径上,其父节点只能有一个,而子节点可能有多个。
基于图1的描述可见,需要进行关联告警处理时,源告警发生后,必然要确定源告警的关联告警,因此,通过告警源来确定相关联的告警关联对象就是一个必不可少的关键步骤了,而为告警关联对象的搜索提供支持的正是告警对象树,以下是告警对象树的一种数据结构,通过该数据结构即能够实现对告警关联对象的搜索:
typedef struct ObjTreeNode /*告警对象树节点数据结构*/
{
DWORD dwObjType; /*告警对象类型*/
DWORD dwFObjType[6]; /*父对象类型列表*/
DWORD dwCObjType[6]; /*子对象类型列表,0值表示无效*/
}
步骤A3:设置告警对象之间的查询依赖关。通过所述查询依赖关系就能够提供对告警关联对象的搜索支持。
确定一个节点的关联节点时,需要依据设置的关联关系信息来进行。本发明中,可以采用类SQL(Structured Query Language)的方式来描述告警对象树父子节点之间的关联关系、即查询依赖关系,该查询依赖关系是基于对象类型码进行描述的。具体地:
针对告警对象树上的每一对父子节点(告警对象类型),均需要给出对应的类SQL查询语句,类SQL查询语句用于表示两个节点之间的关联路径、即两个节点具有关联关系。基于该类SQL查询语句来进行告警关联对象的搜索。通过各类SQL查询语句就能够得到告警对象树上节点之间的查询依赖关系表、如SQL表。根据以上描述可见,本发明的实现方案中能够非常容易地确定一个节点的父节点或子节点。
进行关联告警处理时,通过源告警的告警对象类型便能够在SQL表中索引到对应的类SQL查询语句,通过类SQL查询语句便能够非常容易地确定告警关联对象在告警对象树上的位置,从而实现后续对告警关联对象所进行的关联告警处理。实例化后的告警对象树上的每个节点即对应着一个告警对象。以告警源的告警、即源告警对象为起始节点,反复对告警对象树进行查询,正向或反向搜索告警对象树,即不断地查询包含源告警对象的SQL查询语句,便能够获得与源告警对象相关联的所有告警关联对象。
当然,也可以采用XML等其他方式来描述告警对象之间的查询依赖关系。
另外,为了提高处理效率,可以为一些具有特定关联关系、但又并非父子节点、即父子对象的告警对象之间设置查询依赖关系。如图2中的告警对象类型G和告警对象类型B,基于告警对象树实例化后的关联告警处理中要求对二者进行强关联。关联告警处理中,告警对象G发生告警后,需要隐藏告警对象B的告警,此时,则根据强关联设置告警对象类型G和告警对象类型B之间的查询依赖关系,这样,虽然告警对象G与告警对象B不是父子对象,但仍然可以通过设置的查询依赖关系直接确定,而无需通过二者在告警对象树上的中间节点来确定。本发明中,将这种具有特定关联关系、但又并非父子对象的告警对象称为特定告警对象。
此外,确定告警关联对象时,如果无法根据查询依赖关系直接确定出对应的告警关联对象,则可以通过查询依赖关系表确定源告警对象在告警对象树上的各关联路径,然后根据确定出的关联路径确定对应的告警关联对象,如通过依次相接的多条关联路径确定对应的告警关联对象。
对于实例化后的告警对象树,可以将所有告警码依次挂到告警对象树的对应节点上;需要设置告警关联规则时,根据告警关联规则所需的关联关系,从主告警所属的告警对象出发,在其父子对象的关联路径上找到需要关联的告警码,逐一设置出各告警关联规则,便得到了基于实例化的告警对象树的告警关联规则。虽然告警关联规则只是基于告警码码的描述,但关联告警处理中,是需要根据告警关联规则对相应告警关联对象进行处理的,因此,告警关联规则对告警对象之间的父子对象关系仍然是有要求的。
网管用户不同,其关注的告警也不尽相同。例如,运营商关注的是反映运营维护总体指标的告警,如小区退出服务告警和性能指标恶化告警;而工程人员从排除故障和工程任务单派发的角度出发,关注的则是导致***故障的原始告警,如传输链路故障或单板器件故障。
告警关联规则与告警关联对象无关。也就是说,虽然一个告警所属的告警对象是确定的,但告警的根子关系、主告警与子告警之间的关系、父子对象的关系不见得是完全一一对应的。关联告警以何种方式呈现给网管用户,即,将哪个告警作为主要告警或根告警加以显示,哪些告警作为次要告警或子告警,需要屏蔽其显示,这完全取决于告警关联规则的设置,告警对象树及告警对象之间的查询依赖关系只是用来确定告警关联对象的。
既然告警是面向告警对象的,那么基于告警对象树来呈现告警关联对象则是一个很好的实现,能够直观地向网管用户展现关联告警的信息。因此,以下描述本发明中基于告警对象树将关联告警可视化的具体实现。
可以通过关联告警主界面来呈现一棵告警对象树。告警对象树实例化后,告警对象树的节点即表示告警对象。某一告警对象有告警发生且需要显示时,该告警对象将按设定的颜色或事件(如闪烁)进行呈现,未发生告警的告警对象可以灰化或隐藏。用户双击发生告警的告警对象,可以看到该告警对象下所有的告警。例如,网管用户当前关注的是小区告警,则双击告警对象树中表示小区的节点,查看小区对象(告警对象类型)的所有告警。用户进一步可以选择某个小区对象,获取其所有告警,然后确定其需要关注的告警,如“小区退出服务告警”。用户双击该告警(或右键菜单),显示与该小区对象相关的小区退出服务告警。
由于告警对象树是相对固定的,不需要网管动态生成,因此可以将告警对象树作为关联告警主界面的一个静态背景图,每个节点都是一个控件。本发明中,告警对象树可以是静态固化的,而不必动态生成。这样,关联告警时只是将告警关联对象挂到告警对象树的对应节点上。基于告警对象树的可视化关联告警呈现方式将网管进行关联告警的实现复杂度大大降低,而且更为直观。将告警挂到关联告警主界面的告警对象树的节点中是易于实现的,即先通过告警对象类型确定告警码,然后根据告警码搜索当前告警,实现效率不存在任何问题。
特定告警对象在告警对象树上的呈现方式与前面描述相同,也是基于告警对象树的,只不过此时显示的是某个特定告警对象的告警关联对象,即先通过确定告警对象树上该特定告警对象的告警关联对象,然后通过告警关联对象和告警码搜索当前告警。特定告警对象由用户手工触发,可以每次只选择一个特定告警对象。以上描述的实现对于虚拟告警的呈现是同样适用的。
以上所述关联告警可视化过程中,可以不涉及告警显示屏蔽规则和告警显示解屏蔽规则。原因是:就告警显示屏蔽规则或告警显示解屏蔽规则而言,无非是告警源与告警关联对象的显示隐藏关系,既然已经以告警对象树的方式呈现告警,则以网管用户的角度来看,已经满足了需求。而告警显示屏蔽规则和告警显示解屏蔽规则仅用于网管当前告警窗口中告警的显示和隐藏,以便突出网管用户重点关注的告警。
以下给出一个关联告警主界面的示例,以便于理解。例如,告警对象树中告警对象G、E、D、B相关联,设置的告警码分别为AlarmG、AlarmE、AlarmD、AlarmB的告警,并设置告警显示屏蔽规则为AlarmG→(AlarmE,AlarmD,AlarmB)。如果告警对象G、E、D、B均上报了对应告警,则经过告警显示屏蔽规则处理后,那么关联告警主界面的显示大致如图3所示,只有告警对象G的节点显示告警。网管用户为了了解详细的告警信息,可双击告警对象树的节点G,关联告警主界面此时显示所有与告警对象G相关联且有告警的告警对象对应的节点,关联告警主界面的显示大致如图4所示。图4中,告警对象B是与告警对象G相关联的特定告警对象。当鼠标移动到告警对象树的相应节点时,可采用浮动窗口的方式显示该告警对象的告警信息。这里所说的告警对象是已经实例化后的具体告警对象、即告警对象实例。
下面对本发明中涉及的关联告警处理流程进行描述,以使本发明的实现更为清晰。
网管收到一条告警时,根据告警显示屏蔽规则可能需要隐藏掉若干条告警。但是由于关联告警之间不存在明显的时间依赖关系,因此,存在这样一种情况:如果作为子告警的源告警在时间上先于按告警显示屏蔽规则处理得到的主告警,则此时将会导致告警显示屏蔽规则的部分失效。为了避免这种情况的发生,可以在收到源告警后延迟设定时间后再进行告警显示屏蔽规则处理,也可以在收到任意一条告警时,都主动检查其是否需要被隐藏,具体实现可参见图5所示的流程。
图5为本发明中告警显示屏蔽规则处理流程示意图,如图5所示,告警显示屏蔽规则的具体处理过程包括:
步骤601~步骤602:网管接收告警源的告警、即源告警,根据设置的告警关联规则,判断是否存在与源告警相匹配的告警显示屏蔽规则,如果存在,则继续执行步骤603;如果不存在,则直接结束当前告警显示屏蔽规则处理流程。相匹配的告警显示屏蔽规则是指源告警发生时,能够引起告警显示发生变化的相应告警显示屏蔽规则。
步骤603~步骤604:网管取出匹配的告警显示屏蔽规则,根据告警显示屏蔽规则判断源告警是否为主告警,如果是主告警,则继续执行步骤605;如果不是主告警,则继续执行步骤608。
步骤605~步骤607:网管根据匹配的告警显示屏蔽规则,在告警对象树上确定与告警源相关联的、需要隐藏告警的告警关联对象,判断告警关联对象所在节点是否存在符合告警显示屏蔽规则的告警、即子告警,如果存在,则执行步骤607,屏蔽告警关联对象所在节点的子告警显示,即隐藏告警关联对象所在节点的子告警;如果不存在,则结束当前告警显示屏蔽规则处理流程。
其中,步骤605~步骤606的具体实现为:
首先,根据源告警对象在查询依赖关系中索引至源告警对象在告警对象树上的对应节点,然后根据查询依赖关系在告警对象树上确定该节点的各关联节点;
然后,根据告警显示屏蔽规则,在各关联节点中确定与告警源相关联的、需要隐藏告警的告警关联对象;如果无法根据查询依赖关系确定关联节点,即无法确定与告警源相关联的、需要隐藏告警的告警关联对象,则通过查询依赖关系确定源告警对象在告警对象树上的各关联路径,然后结合告警显示屏蔽规则,通过确定出的关联路径确定与告警源相关联的、需要隐藏告警的告警关联对象。
步骤608~步骤610:网管根据在告警对象树上设置的告警显示屏蔽规则,在告警对象树上确定需要隐藏告警的、与告警源相关联的告警关联对象,判断告警关联对象所在节点是否存在符合告警显示屏蔽规则的告警、即主告警,如果存在,则执行步骤610,屏蔽告警关联对象所在节点的主告警显示,即隐藏告警关联对象所在节点的主告警;如果不存在,则结束当前告警显示屏蔽规则处理流程。
网管接收到一条告警恢复时,根据告警显示解屏蔽规则处理可能需要显示被隐藏的告警。但是,如果被隐藏的告警早于源告警恢复,此时,由于被隐藏的告警已经恢复了,即告警已经不复存在了,显示或隐藏都已经没有任何意义了,因此,告警显示解屏蔽规则只需主告警恢复时触发即可,具体实现可参见图6所示的流程。
图6为本发明中告警显示解屏蔽规则处理流程示意图,如图6所示,告警显示解屏蔽规则的具体处理过程包括:
步骤701~步骤702:网管接收告警源的告警恢复,根据设置的告警关联规则,判断是否存在相匹配的告警显示屏蔽规则,如果存在,则继续执行步骤703;如果不存在,则直接结束当前告警显示屏蔽规则处理流程。相匹配的告警显示解屏蔽规则是指将收到的告警恢复对应的告警作为主告警的相应告警显示解屏蔽规则。
步骤703~步骤706:网管取出匹配的告警显示解屏蔽规则,根据在告警对象树上设置的告警显示解屏蔽规则,在告警对象树上确定与告警源相关联的、需要显示告警的告警关联对象,判断告警关联对象所在节点是否存在符合告警显示解屏蔽规则的告警、即子告警,如果存在,则执行步骤706,显示告警关联对象所在节点的子告警,即解除告警关联对象所在节点的子告警的显示屏蔽;如果不存在,则结束当前告警显示解屏蔽规则处理流程。
以上确定告警关联对象的具体过程与步骤605~步骤606的详细描述中基本相同,在此不再赘述。
以上描述的告警显示屏蔽规则或告警显示解屏蔽规则处理仅用于网管当前告警窗口中告警的显示和隐藏,与告警对象树的显示无关,以便突出网管用户重点关注的告警,使告警的管理在实现上更为简单。
由于通信***中的很多实际告警对于网管用户而言是非常不直观的,而且可能也存在与网管用户从告警管理角度出发的需求不一致的情况,因此,在告警管理中,可以根据网管需求将一些实际告警设置通过通信***中并不存在的告警来表示,这样的告警即为虚拟告警。
这样,本发明方案中,还可以设置虚拟告警对象,在告警对象树中融入虚拟告警,即告警对象树的节点上设置有虚拟告警,基于融合了虚拟告警对象的告警对象树设置查询依赖关系。这样,告警对象树中融入虚拟告警后,具体实现与前面描述的完全相同。
虚拟告警对象可以至少包含如下与关联告警相关的信息:告警时间、告警地址、告警级别、告警详细信息等。虚拟告警对象的数据结构如下,
typedef struct T_TVAlarmInfo /*告警结构*/
{
DWORD dwAlarmCode; /*告警码*/
DWORD dwAlarmID; /*告警流水号*/
CHAR acAlarmObj[32]; /*告警对象信息*/
T_SubAlarmInfo tSubAlarmInfo; /*子告警信息*/
}_PACKED_1_T_TVAlarmInfo;
tpedefstruct T_SubAlarmInfo /*子告警信息*/
{
DWORD acdwSubAlarmCode[6];/*子告警码列表*/
DWORD dwSubAlarmAndMask; /*子告警与运算掩码*/
DWORD dwSubAlarmOrMask; /*子告警或运算掩码*/
DWORD dwSubAlarmRestoreAndMask; /*子告警恢复与运算掩码*/
DWORD dwSubAlarmRestoreOrMask; /*子告警恢复或运算掩码*/
DWORD dwSubAlarmBitmap; /*子告警位图,bit=0/1*/
}_PACKED_1_T_SubAlarmInfo;
其中,子告警与运算掩码中的bit位对应子告警码列表的一个告警码,如最高bit位对应acdwSubAlarmCode[0],次高bit位对应acdwSubAlarmCode[1],依此类推。一种方式是dwSubAlarmAndMask,即bit=1表示“&”运算、bit=0表示无效;另一种方式是dwSubAlarmOrMask,即bit=1表示“|”运算、bit=0表示无效。
子告警恢复与运算掩码中的bit位对应子告警码列表的一个告警码,如最高bit位对应acdwSubAlarmCode[0],次高bit位对应acdwSubAlarmCode[1],依此类推。一种方式是dwSubAlarmRestoreAndMask,即bit=1表示“&”运算、bit=0表示无效;另一种方式是dwSubAlarmRestoreOrMask,即bit=1表示“|”运算、bit=0表示无效。
子告警位图dwSubAlarmBitmap中的bit位对应子告警码列表的一个告警码,如最高bit位对应acdwSubAlarmCode[0],次高bit位对应acdwSubAlarmCode[1],依此类推,用于标识对应告警码是否有效,例如,bit=1告警有效、bit=0表示告警无效。此时,将告警关联规则的→左侧标记为“*”的告警码,只有当告警关联规则→右侧的告警对象对应该告警码的所有子对象都发生告警,dwSubAlarmBitmap对应的bit位才为1,否则该bit位为0。
为方便理解,下面通过一个示例,来说明各字段的含义。
根据告警转换规则(&B,&*C)→D,告警B发生后生成关联告警D,关联告警D为虚拟告警。新生成的虚拟告警D的子告警信息中各字段如下:
acdwSubAlarmCode[0]=告警码B;
acdwSubAlarmCode[1]=告警码C;
dwSubAlarmAndMask=0xC0000000;/*0x 11000000b*/;
dwSubAlarmOrMask=0x00000000;
dwSubAlarmBitmap=0x80000000。
根据告警转换规则(|H,|D,|*E,|F]→G,告警E发生后生成关联告警G。如果虚拟告警G的告警对象类型为E的子对象有4个(如IMA组有4个IMA链路),分别为ObjE1、ObjE2、ObjE3、ObjE4;子告警的告警对象类型为H的子对象有一个,为ObjH。在告警E发生时,ObjE1、ObjE2有告警发生,ObjH也有告警发生,则当ObjE3发生告警时,虚拟告警G的子告警信息中各字段如下:
acdwSubAlarmCode[0]=AlarmCodeH;
acdwSubAlarmCode[1]=AlarmCodeD;
acdwSubAlarmCode[2]=AlarmCodeE;
acdwSubAlarmCode[3]=AlarmCodeF;
dwSubAlarmAndMask=0x00000000;
dwSubAlarmOrMask=0xF0000000;/*0x11110000b*/;
dwSubAlarmBitmap=0x80000000;/*0x10000000b*/。
图7为本发明中基于虚拟告警的告警转换规则处理流程示意图,如图7所示,基于虚拟告警的告警转换规则处理具体包括:
步骤901~步骤902:网管接收告警源的告警、即源告警,根据设置的告警转换规则,判断是否存在与收到的源告警相匹配的告警转换规则,如果存在,则继续执行步骤903;如果不存在,则直接结束当前关联告警流程。所述告警转换规则是结合虚拟告警进行设置的。
步骤903:网管确定匹配的告警转换规则。
步骤904~步骤905:网管根据设置的告警转换规则,确定与告警源相关联的告警关联对象,判断相应告警关联对象上是否存在符合告警转换规则的虚拟告警,如果存在,则直接执行步骤907;如果不存在,则继续执行步骤906。由于告警转换规则是结合虚拟告警进行设置的,因此,当前是针对虚拟告警的关联告警处理,因此,需要增加告警对象树中是否存在相应虚拟告警的判断处理。
步骤906:网管生成临时虚拟告警,并初始化该临时虚拟告警的子告警位图结构。
步骤907~步骤909:网管根据匹配的告警转换规则,设置虚拟告警的子告警位图,对虚拟告警进行上报,结束当前关联告警流程。
在设置虚拟告警的子告警位图的过程中,网管将结合子告警位图判断是否应该产生虚拟告警,如果需要,则产生虚拟告警并生效上报。
是否应该产生虚拟告警的规则如下:
IF(dwSubAlarmAndMask==dwSubAlarmBitmap&dwSubAlarmAndMask
||0!=dwSubAlarmOrMask&dwSubAlarmBitmap)
当规则AND运算指定的所有关联子告警存在,且规则OR运算指定的任一关联子告警存在,则条件满足,产生虚拟告警并生效上报。
以上所述网管可以为网管平台、告警管理单元等。
图8为本发明中实现关联告警的装置结构示意图,如图8所示,该装置包括:规则匹配单元、对象关联单元和关联告警单元,其中,规则匹配单元用于确定存在与源告警信息相匹配的告警关联规则时,向对象关联单元和关联告警单元分别提供匹配的告警关联规则;对象关联单元用于根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,并向关联告警单元提供该告警关联对象;关联告警单元用于根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理。
该装置还包括存储单元,用于存储设置的告警关联规则和告警对象树,规则匹配单元通过对存储单元的访问获取匹配的告警关联规则;对象关联单元通过对存储单元的访问获取告警对象树。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种实现关联告警的方法,其特征在于,该方法包括:
确定存在与源告警信息相匹配的告警关联规则时,根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:预先设置用于描述告警之间的关联关系的告警关联规则;
所述告警关联规则至少包括:告警显示屏蔽规则、或告警显示解屏蔽规则、或告警转换规则、或告警恢复转换规则、或以上任意的组合。
3.根据权利要求2所述的方法,其特征在于,所述告警关联规则的描述方式为:文本格式、或XML、或正则表达式。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:预先设置用于描述告警对象之间的关联关系的告警对象树,具体包括:
设置告警对象,确定告警对象的对象属性;根据对象属性设置告警对象类型,基于所述对象类型码设置告警对象树;
针对所述告警对象树上具有关联关系的每一对节点设置查询语句,所述查询语句组成查询依赖关系。
5.根据权利要求4所述的方法,其特征在于,所述具有关联关系的每一对节点为:告警对象树上的各父子节点;或者,告警对象树上的各父子节点和需要强关联的每一对节点。
6.根据权利要求4所述的方法,其特征在于,所述根据匹配的告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,包括:
根据源告警对象在查询依赖关系中索引至源告警对象在告警对象树上的对应节点,然后根据查询依赖关系在告警对象树上确定该节点的各关联节点;根据所述告警关联规则在各关联节点中确定与源告警对象相关联的告警关联对象;或者,
根据源告警对象在查询依赖关系中索引至源告警对象在告警对象树上的对应节点,然后根据查询依赖关系在告警对象树上确定该节点的各关联节点;根据所述告警关联规则无法在各关联节点中确定与源告警对象相关联的告警关联对象时,通过查询依赖关系确定源告警对象在告警对象树上的各关联路径,然后结合所述告警关联规则,通过确定出的关联路径确定与源告警对象相关联的告警关联对象。
7.根据权利要求1至6任一所述的方法,其特征在于,所述告警对象树的节点上设置有虚拟告警时,所述根据匹配的告警关联规则对告警关联对象的告警进行关联告警处理,包括:
a、判断所述告警关联对象上是否存在符合所述告警关联规则的虚拟告警,如果不存在,则生成虚拟告警,并初始化该虚拟告警的子告警位图结构,然后执行步骤b;如果存在,则直接执行步骤b;
b、根据所述告警关联规则,设置虚拟告警的子告警位图。
8.根据权利要求1至6任一所述的方法,其特征在于,所述进行关联告警处理之后,进一步包括:关联告警主界面与所述告警对象树对应,发生告警或告警恢复时,显示或隐藏所述告警对象树的对应节点。
9.一种实现关联告警的装置,其特征在于,该装置包括:
规则匹配单元,用于确定存在与源告警信息相匹配的告警关联规则时,向对象关联单元和关联告警单元分别提供匹配的告警关联规则;
对象关联单元,用于根据所述告警关联规则在告警对象树上确定与告警源相关联的告警关联对象,并向关联告警单元提供该告警关联对象;
关联告警单元,用于根据所述告警关联规则对告警关联对象的告警进行关联告警处理。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:存储单元,用于存储设置的告警关联规则和告警对象树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100886045A CN101938366B (zh) | 2009-06-30 | 2009-06-30 | 一种实现关联告警的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100886045A CN101938366B (zh) | 2009-06-30 | 2009-06-30 | 一种实现关联告警的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101938366A true CN101938366A (zh) | 2011-01-05 |
CN101938366B CN101938366B (zh) | 2012-06-13 |
Family
ID=43391515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100886045A Active CN101938366B (zh) | 2009-06-30 | 2009-06-30 | 一种实现关联告警的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101938366B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611565A (zh) * | 2011-10-18 | 2012-07-25 | 国网电力科学研究院 | 一种基于正则表达式的监控***告警关联分析方法 |
WO2012129798A1 (en) * | 2011-03-30 | 2012-10-04 | Huawei Technologies Co., Ltd. | Method and apparatus for open loop transmission in a multiple antenna wireless communication system |
CN103108347A (zh) * | 2011-11-11 | 2013-05-15 | 中兴通讯股份有限公司 | 有线网络和无线网络的关联告警方法及装置 |
CN103401698A (zh) * | 2013-07-02 | 2013-11-20 | 北京奇虎科技有限公司 | 用于服务器集群运算中对服务器状况报警的监控*** |
CN105099752A (zh) * | 2015-05-22 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种关联告警数据的推荐方法和装置 |
EP2933949A4 (en) * | 2013-02-21 | 2016-05-04 | Zte Corp | METHOD AND DEVICE FOR ALARM PROCESSING, METHOD FOR SETTING INFORMATION ASSOCIATED WITH AN ALARM |
CN106209431A (zh) * | 2016-06-29 | 2016-12-07 | 瑞斯康达科技发展股份有限公司 | 一种告警关联方法及网管*** |
CN107479518A (zh) * | 2017-08-16 | 2017-12-15 | 南京联成科技发展股份有限公司 | 一种自动生成告警关联规则的方法及*** |
CN107548087A (zh) * | 2016-06-24 | 2018-01-05 | 中兴通讯股份有限公司 | 一种告警关联分析的方法及装置 |
CN108243045A (zh) * | 2016-12-27 | 2018-07-03 | 大唐移动通信设备有限公司 | 一种基于规则引擎的北向网管管理方法和网管管理装置 |
CN110334119A (zh) * | 2019-06-21 | 2019-10-15 | 腾讯科技(深圳)有限公司 | 一种数据关联处理方法、装置、设备及介质 |
CN111585782A (zh) * | 2020-03-18 | 2020-08-25 | 国网江苏省电力有限公司信息通信分公司 | 综合化集中告警自动处理***及方法 |
CN112104488A (zh) * | 2020-09-01 | 2020-12-18 | 上海佰贝科技发展股份有限公司 | 一种报警信息处理方法、装置、***及存储介质 |
CN114500229A (zh) * | 2021-12-30 | 2022-05-13 | 国网河北省电力有限公司信息通信分公司 | 基于时空信息的网络告警定位及分析方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100544282C (zh) * | 2007-03-21 | 2009-09-23 | Ut斯达康通讯有限公司 | 一种故障关联分析***以及方法 |
CN100589418C (zh) * | 2007-12-10 | 2010-02-10 | 中兴通讯股份有限公司 | 告警相关性规则的生成方法及生成*** |
-
2009
- 2009-06-30 CN CN2009100886045A patent/CN101938366B/zh active Active
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012129798A1 (en) * | 2011-03-30 | 2012-10-04 | Huawei Technologies Co., Ltd. | Method and apparatus for open loop transmission in a multiple antenna wireless communication system |
US9941947B2 (en) | 2011-03-30 | 2018-04-10 | Huawei Technologies Co., Ltd. | Method and apparatus for open loop transmission in a multiple antenna wireless communication system |
CN103782560A (zh) * | 2011-03-30 | 2014-05-07 | 华为技术有限公司 | 多天线无线通信***中的开环传输的方法和装置 |
US8787485B2 (en) | 2011-03-30 | 2014-07-22 | Huawei Technologies Co., Ltd. | Method and apparatus for open loop transmission in a multiple antenna wireless communication system |
CN103782560B (zh) * | 2011-03-30 | 2017-10-24 | 华为技术有限公司 | 多天线无线通信***中的开环传输的方法和装置 |
US9225409B2 (en) | 2011-03-30 | 2015-12-29 | Huawei Technologies Co., Ltd. | Method and apparatus for open loop transmission in a multiple antenna wireless communication system |
CN102611565B (zh) * | 2011-10-18 | 2015-07-08 | 深圳供电局有限公司 | 一种基于正则表达式的监控***告警关联分析方法 |
CN102611565A (zh) * | 2011-10-18 | 2012-07-25 | 国网电力科学研究院 | 一种基于正则表达式的监控***告警关联分析方法 |
CN103108347B (zh) * | 2011-11-11 | 2017-03-29 | 中兴通讯股份有限公司 | 有线网络和无线网络的关联告警方法及装置 |
CN103108347A (zh) * | 2011-11-11 | 2013-05-15 | 中兴通讯股份有限公司 | 有线网络和无线网络的关联告警方法及装置 |
US9788218B2 (en) | 2013-02-21 | 2017-10-10 | Xi'an Zhongxing New Software Co., Ltd. | Alarm processing method and device, alarm associated information setting method |
EP2933949A4 (en) * | 2013-02-21 | 2016-05-04 | Zte Corp | METHOD AND DEVICE FOR ALARM PROCESSING, METHOD FOR SETTING INFORMATION ASSOCIATED WITH AN ALARM |
CN103401698A (zh) * | 2013-07-02 | 2013-11-20 | 北京奇虎科技有限公司 | 用于服务器集群运算中对服务器状况报警的监控*** |
CN105099752A (zh) * | 2015-05-22 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种关联告警数据的推荐方法和装置 |
CN107548087A (zh) * | 2016-06-24 | 2018-01-05 | 中兴通讯股份有限公司 | 一种告警关联分析的方法及装置 |
CN106209431B (zh) * | 2016-06-29 | 2019-06-11 | 瑞斯康达科技发展股份有限公司 | 一种告警关联方法及网管*** |
CN106209431A (zh) * | 2016-06-29 | 2016-12-07 | 瑞斯康达科技发展股份有限公司 | 一种告警关联方法及网管*** |
CN108243045B (zh) * | 2016-12-27 | 2020-07-28 | 大唐移动通信设备有限公司 | 一种基于规则引擎的北向网管管理方法和网管管理装置 |
CN108243045A (zh) * | 2016-12-27 | 2018-07-03 | 大唐移动通信设备有限公司 | 一种基于规则引擎的北向网管管理方法和网管管理装置 |
CN107479518A (zh) * | 2017-08-16 | 2017-12-15 | 南京联成科技发展股份有限公司 | 一种自动生成告警关联规则的方法及*** |
CN110334119A (zh) * | 2019-06-21 | 2019-10-15 | 腾讯科技(深圳)有限公司 | 一种数据关联处理方法、装置、设备及介质 |
CN110334119B (zh) * | 2019-06-21 | 2024-06-11 | 腾讯科技(深圳)有限公司 | 一种数据关联处理方法、装置、设备及介质 |
CN111585782A (zh) * | 2020-03-18 | 2020-08-25 | 国网江苏省电力有限公司信息通信分公司 | 综合化集中告警自动处理***及方法 |
CN112104488A (zh) * | 2020-09-01 | 2020-12-18 | 上海佰贝科技发展股份有限公司 | 一种报警信息处理方法、装置、***及存储介质 |
CN114500229A (zh) * | 2021-12-30 | 2022-05-13 | 国网河北省电力有限公司信息通信分公司 | 基于时空信息的网络告警定位及分析方法 |
CN114500229B (zh) * | 2021-12-30 | 2024-02-02 | 国网河北省电力有限公司信息通信分公司 | 基于时空信息的网络告警定位及分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101938366B (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101938366B (zh) | 一种实现关联告警的方法及装置 | |
US10797958B2 (en) | Enabling real-time operational environment conformity within an enterprise architecture model dashboard | |
US20190065541A1 (en) | Event Time Selection Output Techniques | |
EP3327637B1 (en) | On-demand fault reduction framework | |
CN1992636B (zh) | 一种处理告警信息的***及方法 | |
CN108322351A (zh) | 生成拓扑图的方法和装置、故障确定方法和装置 | |
CN110838944A (zh) | 一种云中心租户维度拓扑图的实现方法 | |
CN106603582A (zh) | 一种网络微服务发现方法 | |
CN109726066B (zh) | 用于标识存储***中的问题部件的方法和设备 | |
CN112559237B (zh) | 运维***排障方法、装置、服务器和存储介质 | |
CN104765621A (zh) | 一种在集群节点中部署程序的方法和*** | |
CN107683467A (zh) | 用于使用结构监视***来处理涉及计算***和网络的事件的***和方法 | |
CN106557399A (zh) | 用于呈现存储集群的状态的方法和装置 | |
CN114020581A (zh) | 基于拓扑优化FP-Growth算法的告警关联方法 | |
CN108628648B (zh) | 数据处理方法和数据处理装置 | |
CN104765672A (zh) | 错误码监控方法、装置及设备 | |
JP2012003406A (ja) | 障害原因判定ルール検証装置及びプログラム | |
CN111224970A (zh) | Sdn网络***、网络攻击防御方法、设备及存储介质 | |
JP2008009475A (ja) | 計算機システム統合管理環境におけるメッセージ変換装置 | |
CN107977310B (zh) | 一种遍历测试命令生成方法及装置 | |
JP6027880B2 (ja) | インシデント管理システム、インシデント管理方法、およびプログラム | |
JP2006025434A (ja) | 大容量障害相関システム及び方法 | |
CN112596711A (zh) | 一种基于Web***的个性化权限管理设置方法及*** | |
CN101495978A (zh) | 减少总线连接的消费者和产生者之间的消息流 | |
US8667340B2 (en) | Method and system for distributed processing of alerts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |