本发明涉及通信领域的管理技术,尤其涉及一种基础设施云中的实时告警处理方法及系统。
背景技术:
基础设施云(iaas)为用户提供了虚拟的计算资源、存储资源和网络资源,为了更高效、合理的分配和使用这些资源,管理员需要对这些资源的状态进行实时监控,比如,通过部署通用的监控软件可以实现对基础设施云中的资源进行监控,这种方案通常操作方式为:有一个中心的数据存储节点和一系列数据采集代理节点,采集代理周期性的收集性能数据,然后将收集到数据通过tcp/ip网络发送给中心节点,中心节点收到数据后,将数据写入文件系统或数据库中进行持久化;反复查询文件系统或数据库,与告警规则进行匹配,若发现匹配项,则触发告警。
但是,上述监控方案中,将虚拟机的监控和物理机的监控作为同一类资源进行监控,如此一来,必然会失去虚拟机的许多特有属性;此外,通过tcp/ip协议发送监控数据受限于网络架构,还使得网络的安全性下降;另外,监控方案通常基于历史数据分析与查询,这种告警方式需要反复查询文件系统或数据库,易出现数据库查询瓶颈;此外,数据查询和分析都需要消耗时间,造成告警的延时较大。
技术实现要素:
有鉴于此,本发明的目的在于提供一种基础设施云中的实时告警处理方法及系统,能至少解决现有技术中存在的上述问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种基础设施云中的实时告警处理方法,包括:
设置告警规则;
针对至少三个资源类型,采集所述至少三个资源类型对应的监控数据;
基于设置的所述告警规则,针对所述监控数据进行实时计算分析得到分析结果;
基于所述分析结果进行告警处理。
本发明实施例提供了一种实时告警处理系统,所述系统包括:
告警控制器,用于设置告警规则;
中心收集器,用于针对至少三个资源类型,采集所述至少三个资源类型对应的监控数据;
实时计算控制器,用于基于所述告警规则,针对所述监控数据进行实时计算分析得到分析结果;基于所述分析结果进行告警处理。
本发明所提供的基础设施云中的实时告警处理方法及系统,能够针对至少云计算数据中心中三个资源类型获取到至少三种类型的监控数据,如此以区分并覆盖云计算数据中心中各种资源类型,具备更好的扩展性和安全性;进一步地,针对获取到的监控数据进行实时计算分析,从而能够通过减少先保存获取到的监控数据,再针对获取到的监控数据进行分析所需要的时间,保证了对监控数据进行实时、并且高效的处理,如此达到降低系统负载,提高告警实时以及高效性的目的。
附图说明
图1为本发明实施例基础设施云中的实时告警处理方法流程示意图;
图2为本发明实施例各个资源类型之间的类图;
图3为本发明实施例基础设施云中的实时告警处理系统组成结构示意图;
图4为本发明实施例系统框架示意图一;
图5为本发明实施例系统框架示意图二。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
实施例一、
本发明实施例提供了一种基础设施云中的实时告警处理方法,如图1所示,包括:
步骤101:设置告警规则;
步骤102:针对至少三个资源类型,采集所述至少三个资源类型对应的监控数据;
步骤103:基于设置的所述告警规则,针对所述监控数据进行实时计算分析得到分析结果;
步骤104:基于所述分析结果进行告警处理。
这里,本实施例提出的基础设施云中的实时告警处理方法,能够对监控数据进行实时处理。通过告警控制器,将告警规则输入到流计算引擎中,流计算引擎对不断接受监控数据进行计算,并将结果与告警规则进行匹配,若所述监控数据满足告警规则中的告警条件,则立即基于用户自定义的告警规则发出告警动作。通过采用这种方式,能够不但避免查询数据库产生的延迟和瓶颈,也能够提高告警的实时性。
本实施例提出的至少三个资源类型,至少包括有:虚拟机采集代理、主动推送代理和主动查询代理这三种资源类型。具体为以下这三种:
第一种、从虚拟机侧实时采集得到监控数据;
第二种、接收到可编程的网络设备实时发来的监控数据;
第三种、从不可编程的网络设备侧实时采集得到监控数据。
各个资源类型之间的类图可以参见图2。resource_base代表一种被监控的资源,例如物理机、虚拟机、交换机;resource_base中有一个meter_list属性,用于关联一组监控项,例如物理机的cpu利用率、内存利用率等。一个resource_base对象又关联了一个collector_agent(采集代理),这个采集代 理就负责收集这种类型的资源的监控数据。具体的说明如下:
虚拟机采集代理:适用于采集基础设施云中的一类特殊资源——虚拟机,该资源拥有虚拟机唯一识别id、从属用户、创建时间等额外属性。虚拟机采集代理通过虚拟机串口与虚拟机所在物理机上的虚拟机采集外部代理(vm-agentd)进行通信,外部代理收到监控数据后,再将数据发送给中心收集器。通过实现虚拟机采集代理接口,用户可以增加自定义监控项。
主动推送代理:适用于可编程的设备,例如物理机、虚拟路由器等。该类型代理直接部署在设备上,监控设备的运行状态,并将监控数据直接发送给中心收集器。通过实现主动推动代理接口,用户可以实现监控任意类型的可编程设备。
主动查询代理:适用于不可编程设备,例如交换机、磁盘整列等,该类型设别通常都提供了专用的监控信息查询接口。主动查询代理使用各种专用查询接口,主动查询监控数据,并将查询到的监控数据进行格式化,最后将格式化后的数据发送给中心收集器。通过实现主动查询代理接口,用户可以实现对具有专用监控协议的设备进行监控。
所述获取到告警规则,包括:获取到至少由监控项、告警条件、告警动作组成的所述告警规则。
其中,所述告警规则中的监控项可以为多个监控项,比如可以具体包括以下:求平均(avg)、求和(sum)、最大值(max)、最小值(min)、数量(count)以及这些规则的组合。
所述告警规则需要包含要监控的资源id(resource_id)、监控项(meter_name)、统计时间(period)、告警动作(action)以及用户id(user_id)。比如,一个合法的告警规则可以为一个六元组(resource_id,meter_name,rules,period,action,user_id)。
所述基于所述告警规则对所述监控数据进行实时计算分析得到分析结果,包括:
选取与所述告警规则对应的监控数据;
利用选取的所述告警规则中的监控项对所述监控数据进行实时计算分析,判断所述监控数据是否满足告警条件;
若满足所述告警条件,则得到分析结果为所述监控数据满足告警条件,并且将所述告警动作添加至所述分析结果中。
与其相应的,所述基于所述分析结果进行告警处理,包括:
当所述分析结果表征所述监控数据满足告警条件时,基于分析结果中的告警动作执行告警处理。
具体说明如下:所述监控数据为也可以为一个六元组,具体可以为:资源标识、监控项、类型、值、时间戳、数据,即(resource_id,meter_name,type,value,timestamp,metadata)。
分析结果可以为四元组(resource_id,meter_name,action,user_id)。
告警规则对应的具体的告警处理实例,如下所示:
获取到上述告警规则的方法,可以为根据监控数据的资源标识resource_id在找到这个resource_id对应的体现为告警处理链表的告警规则,如果链表为空,则初始化一个空链表作为空告警规则,并将告警处理实例加入到链表中;如果链表不为空,则直接将告警处理实例加入到链表中。
实时告警处理器收到中心收集器发来的监控数据后,按其resource_id分发到各个告警处理实例,并调用其alarm_analyze方法。alarm_analyze方法首先将收到的监控数据加入到sample_queue队列中,并更新avg,sum,max等信息;然后分析sample_queue队首,如果队首的样本过期,则删除样本,并更新avg,sum,max等信息,继续分析队首,直至队首样本在有效期内。根据各比较操作符和各阈值,判断是否触发告警,如果告警,则调用alarm_action方法。
可见,通过采用上述方案,能够针对云计算数据中心中至少三个资源类型采集到至少三种类型的监控数据,如此以区分并覆盖各种资源类型,具备更好的扩展性和安全性;进一步地,针对实时获取到的监控数据进行实时计算分析,从而能够通过减少先保存获取到的监控数据,再针对获取到的监控数据进行分析所需要的时间,保证了对监控数据进行实时、并且高效的处理,如此达到降低系统负载,提高告警实时以及高效性的目的。
实施例二、
本发明实施例提供了一种基础设施云中的实时告警处理系统,如图3所示,所述系统包括:
告警控制器31,用于设置告警规则;
中心收集器32,用于针对至少云计算数据中心中三个资源类型,采集所述至少三个资源类型对应的监控数据;
实时计算控制器33,用于基于所述告警规则,针对所述监控数据进行实时计算分析得到分析结果;基于所述分析结果进行告警处理。
可以理解的是,上述告警控制器、中心收集器以及实时计算控制器可以分别设置于不同的网络设备中,也可以为设置于相同的网络设备中。
其中,所述告警控制器31,具体用于获取到由用户设置的至少由监控项、告警条件、告警动作组成所述告警规则。
所述实时计算控制器33,用于选取与所述告警规则对应的监控数据;利用选取的所述告警规则中的监控项对所述监控数据进行分析,判断所述监控数据是否满足告警条件;若满足所述告警条件,则得到分析结果为所述监控数据满足告警条件,并且将所述告警动作添加至所述分析结果中。
所述实时计算控制器33,用于当所述分析结果表征所述监控数据满足告警条件时,基于分析结果中的告警动作执行告警处理。
所述中心收集器32,用于从虚拟机侧采集得到监控数据;接收到可编程的网络设备直接发来的监控数据;从不可编程的网络设备侧采集得到监控数据。
本专利提出的云平台实时监控与实时告警框架的架构图可以参见图4首先通过告警控制器(alarm-controller)将用户定义的告警规则翻译为实时计算引擎能够识别的计算规则,然后通过实时计算控制器(rtc-controller),应用告警规则。实时计算处理器(rtc-processor)不断接收中心收集器推送过来的监控数据,进行实时处理,若处理结果满足告警规则,则触发告警,并将告警信号发送给告警通知器(alarm-notifier)。示意图如图5所示,其中,告警控制器支持的告警规则包括求平均(avg)、求和(sum)、最大值(max)、最小值(min)、数量(count)以及这些规则的组合。每条告警规则必须包含要监控的资源id(resource_id)、监控项(meter_name)、统计时间(period)、告警动作(action)以及用户id(user_id)。一个合法的告 警规则为一个六元组(resource_id,meter_name,rules,period,action,user_id)。实时计算处理器(rtc-processor)接收的监控数据为六元组(resource_id,meter_name,type,value,timestamp,metadata),而实时计算处理器输出的告警为四元组(resource_id,meter_name,action,user_id)。
实时告警处理器收到中心收集器发来的监控数据后,按其resource_id分发到各个告警处理实例,并调用其alarm_analyze方法。alarm_analyze方法首先将收到的监控数据加入到sample_queue队列中,并更新avg,sum,max等信息;然后分析sample_queue队首,如果队首的样本过期,则删除样本,并更新avg,sum,max等信息,继续分析队首,直至队首样本在有效期内。根据各比较操作符和各阈值,判断是否触发告警,如果告警,则调用alarm_action方法。
可见,通过采用上述方案,能够针对云计算数据中心中至少三个资源类型采集到至少三种类型的监控数据,如此以区分并覆盖各种资源类型,具备更好的扩展性和安全性;进一步地,针对实时获取到的监控数据进行实时计算分析,从而能够通过减少先保存获取到的监控数据,再针对获取到的监控数据进行分析所需要的时间,保证了对监控数据进行实时、并且高效的处理,如此达到降低系统负载,提高告警实时以及高效性的目的。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。