本发明涉及容器云平台领域,具体而言,涉及一种应用于分布式容器云平台的异常检测与定位方法及装置。
背景技术:
云计算作为一种新型服务提供方式,获得了产业界和学术界的青睐。云计算的关键技术就是虚拟化技术,通过将各类资源进行虚拟化,云计算服务提供商能够很便捷的将各类资源进行定制交付给用户使用,众多应用也逐渐开始迁移到云计算集群内。传统的虚拟化技术包括kvm,xen等。但是传统的虚拟化技术由于过于笨重,对于应用集群内某个组件进行创建,修改以及迁移操作都十分的复杂,因此云计算服务提供商需要更加轻量级的虚拟化技术。容器技术是一种轻量级的操作系统级的虚拟化技术。相较于传统的虚拟化技术对于硬件层的虚拟化,容器的虚拟化停留在操作系统层,使其无论是创建、修改还是迁移都十分的便捷。容器技术很快的被各类云计算服务提供商使用。由于容器的这些特点,用户在部署其应用的时候往往会将每个组件运行在独立的容器内,以便方便快捷的对应用进行维护,这造成了容器云复杂的内部结构。同时容器的弱隔离性的特点也导致了容器之间相互干扰较为严重。一旦某个容器出现了异常,异常将会迅速传播。进而影响到不同的应用组件。云服务提供商需要一种能够对通过容器建立的结构复杂的应用集群进行异常定位的方法。
通常而言,一个部署在容器云上的应用往往由成百上千的组件构成,而组件与组件之间相互依赖,构成了一张复杂的由组件作为节点的图。利用图论的相关知识能够从这个复杂的图中定位到异常发生的根源。即基于容器技术的云计算平台通常由上千台物理机组成,每台物理机上通常运行数十个容器,因而基于容器技术的云计算平台相较于传统的云计算平台更加复杂。相比于传统的虚拟机,容器隔离性更差,容器与容器之间干扰更加严重。因而相比于传统虚拟机,容器也更容易相互影响。同时由于容器部署在运行状态下的操作系统上,因而物理机的异常也会引起部署在其上的容器发生异常。现有的异常检测定位方案缺少对于组件之间,组件与物理机之间关联性的分析,同时现有的异常检测定位方案利用性能指标数据进行异常检测与定位,带来极大的存储和传输开销,因而不能很好的适应干扰严重的分布式容器云平台环境。
nguyen等人在《insight:in-situonlineservicefailurepathinferenceinproductioncomputinginfrastructures》的第三章提出在线黑盒异常定位系统定位异常组件。该系统利用虚拟机性能指标构造性能指标的正常波动模型,判断异常变化的数据点,同时结合发生变化的数据点的时间信息和组件之间的依赖关系定位异常组件。虽然该系统能够对异常进行检测和定位,但是由于其采用性能指标进行异常检测和判断,对于复杂的分布式容器云平台,监控性能指标带来的开销将会非常巨大。
技术实现要素:
本发明实施例提供了一种应用于分布式容器云平台的异常检测与定位方法及装置,以至少解决传统基于单组件的异常检测方法无法适用于分布式容器云的技术问题。
根据本发明的一实施例,提供了一种应用于分布式容器云平台的异常检测与定位方法,包括以下步骤:
获取各容器组件的tcp延迟信息;
通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对;
通过组件状态信息键值对构造组件异常子图;
根据组件异常子图定位出异常发生的容器组件节点。
进一步地,通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对包括:
初始化组件的滑动窗口[l0,lk],输入tcp延迟信息直到滑动窗口内tcp延迟的数据个数达到k,初始化平均值
再次输入tcp延迟信息lt,将tcp延迟信息lt插入滑动窗口,并删除滑动窗口内最早的tcp延迟信息lt-k,计算窗口内平均值
计算预警值sdiff=smax-smin,其中smax、smin∈[st-k,st],st-k为最早的tcp延迟信息时的累积和;
判断sdiff是否处于正常阈值[-h,h]之间,如果是,则判断该组件的状态status为正常,否则判断该组件的状态status为异常;
根据各组件的状态信息生成组件状态信息键值对<cid:mid:status>,其中cid表示组件的编号,mid表示组件所处的物理机的编号,status表示组件的状态,当组件状态为异常时status值为1,正常则为0。
进一步地,通过组件状态信息键值对构造组件异常子图包括:
输入组件依赖关系图g,组件依赖关系图的矩阵表示为g=(eij),其中i,j表示应用集群内的组件,eij表示i组件与j组件之间的依赖关系,如果组件i依赖于组件j则eij值为1,否则eij值为0;
遍历组件状态信息键值对,当status值为0时,从组件依赖关系图g中删除i=cid或者j=cid的行和列,遍历完毕得到组件依赖关系子图g1;
判断组件依赖关系子图g1中是否存在独立组件节点,独立组件节点为不依赖于其他组件节点且不为其他任意组件节点依赖的组件节点,将这类组件节点删除后构造组件异常子图g’。
进一步地,根据组件异常子图定位出异常发生的容器组件节点包括:
遍历组件异常子图g’,计算δi=∑j∈g’eij,如果δi=0,则表示组件节点i为异常的根节点。
进一步地,方法在根据组件异常子图定位出异常发生的容器组件节点之后还包括:
判断各异常根节点的mid是否相同,如果相同,则判断编号为mid的物理机发生异常。
进一步地,获取各容器组件的tcp延迟信息包括:
利用软件tcprstat收集各组件的tcp延迟信息。
根据本发明的另一实施例,提供了一种应用于分布式容器云平台的异常检测与定位装置,包括:
延迟信息获取单元,用于获取各容器组件的tcp延迟信息;
状态信息获取单元,用于通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对;
组件异常子图构建单元,用于通过组件状态信息键值对构造组件异常子图;
异常定位单元,用于根据组件异常子图定位出异常发生的容器组件节点。
进一步地,装置还包括:
异常判断单元,用于判断各异常根节点的mid是否相同,如果相同,则判断编号为mid的物理机发生异常。
一种存储介质,存储介质存储有能够实现上述任意一项应用于分布式容器云平台的异常检测与定位方法的程序文件。
一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一项的应用于分布式容器云平台的异常检测与定位方法。
本发明实施例中的应用于分布式容器云平台的异常检测与定位方法及装置,采用tcp延迟信息进行异常状态判断,降低了数据采集的开销,提高了异常状态判断的准确性与实时性。同时考虑到各组件之间,物理机与组件之间的干扰,提出了组件异常子图用以表示异常状态的传播,提高了异常定位的准确性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明应用于分布式容器云平台的异常检测与定位方法的流程图;
图2为本发明应用于分布式容器云平台的异常检测与定位方法的优选流程图;
图3为本发明应用于分布式容器云平台的异常检测与定位装置的模块图;
图4为本发明应用于分布式容器云平台的异常检测与定位方法的优选模块图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着容器技术的发展成熟,基于容器技术的云计算系统即容器云已经开始逐步的取代传统的基于虚拟机的云计算系统。由于容器具有轻量化的特点,容器的部署更加便捷。因而容器云内部组成相比于传统云计算平台更加复杂。其次容器对系统各项资源的隔离相较于虚拟机来说不强,而同一台物理主机上运行多个容器,容器间的干扰相对较为强烈,因此一旦容器云内部某个容器发生异常,异常将迅速传播,进而影响到整个集群。而由于容器云复杂的内部环境,对于传统基于单组件的异常检测方法已经不适用于分布式容器云环境。现有技术采用性能指标对异常进行分析,增加了数据采集的开销,同时需要构造正常的波动模型,对于波动频繁且复杂的容器云平台来说准确率较低且缺乏实时性。
本发明针对容器云平台提供了一种应用于分布式容器云平台的异常检测与定位方法及装置。通过该方法及装置能够对更加复杂的分布式容器云平台进行异常定位与检测,同时通过其组件异常子图提高异常定位的准确率。
实施例1
根据本发明一实施例,提供了一种应用于分布式容器云平台的异常检测与定位方法,参见图1,包括以下步骤:
s101:获取各容器组件的tcp延迟信息;
s102:通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对;
s103:通过组件状态信息键值对构造组件异常子图;
s104:根据组件异常子图定位出异常发生的容器组件节点。
该方法采用tcp延迟信息进行异常状态判断,降低了数据采集的开销,提高了异常状态判断的准确性与实时性。同时考虑到各组件之间,物理机与组件之间的干扰,提出了组件异常子图用以表示异常状态的传播,提高了异常定位的准确性。
作为优选的技术方案中,通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对包括:
初始化组件的滑动窗口[l0,lk],输入tcp(transmissioncontrolprotocol传输控制协议)延迟信息直到滑动窗口内tcp延迟的数据个数达到k,初始化平均值
再次输入tcp延迟信息lt,将tcp延迟信息lt插入滑动窗口,并删除滑动窗口内最早的tcp延迟信息lt-k,计算窗口内平均值
计算预警值sdiff=smax-smin,其中smax、smin∈[st-k,st],st-k为最早的tcp延迟信息时的累积和;
判断sdiff是否处于正常阈值[-h,h]之间,如果是,则判断该组件的状态status为正常,否则判断该组件的状态status为异常;h表示可接受的sdiff的范围,为输入参数之一。
根据各组件的状态信息生成组件状态信息键值对<cid:mid:status>,其中cid表示组件的编号,mid表示组件所处的物理机的编号,status表示组件的状态,当组件状态为异常时status值为1,正常则为0。
作为优选的技术方案中,通过组件状态信息键值对构造组件异常子图包括:
输入组件依赖关系图g,组件依赖关系图的矩阵表示为g=(eij),其中i,j表示应用集群内的组件,eij表示i组件与j组件之间的依赖关系,如果组件i依赖于组件j则eij值为1,否则eij值为0;
遍历组件状态信息键值对,当status值为0时,从组件依赖关系图g中删除i=cid或者j=cid的行和列,遍历完毕得到组件依赖关系子图g1;
判断组件依赖关系子图g1中是否存在独立组件节点,即该独立组件节点为不依赖于其他组件节点且不为其他任意组件节点依赖的组件节点,将这类组件节点删除后构造组件异常子图g’。
作为优选的技术方案中,根据组件异常子图定位出异常发生的容器组件节点包括:
遍历组件异常子图g’,计算δi=∑j∈g’eij,如果δi=0,则表示组件节点i为异常的根节点。
作为优选的技术方案中,参见图2,方法在根据组件异常子图定位出异常发生的容器组件节点之后还包括:
s105:判断各异常根节点的mid是否相同,如果相同,则判断编号为mid的物理机发生异常。
作为优选的技术方案中,获取各容器组件的tcp延迟信息包括:
利用软件tcprstat收集各组件的tcp延迟信息。
下面以具体实施例,对本方法进行详细说明,本发明一种应用于分布式容器云平台的异常检测与定位方法包括以下步骤:
服务管理程序向服务代理程序提交异常定位请求;
服务代理程序接收到异常定位请求后,利用软件tcprstat收集组件的tcp延迟信息。软件tcprstat是免费开源的tcp层分析工具,统计分析请求的响应时间,可以用于临时分析,也可定时任务做信息收集;
通过滑动窗口累积和异常检测算法对服务代理程序所收集的组件的tcp延迟信息进行分析,获取组件的状态信息status并生成组件状态信息键值对<cid:mid:status>;
服务代理程序将组件状态信息键值对<cid:mid:status>提交给服务管理程序;
服务管理程序收集到所有的组件状态信息键值之后构造组件异常子图g’;
服务管理程序遍历组件异常子图g’,计算δi=∑j∈g’eij,如果δi=0,则表示组件节点i为异常的根节点;
判断各异常根节点的mid是否相同,如果相同,表示编号为mid的物理机发生异常。
实施例2
根据本发明另一实施例,提供了一种应用于分布式容器云平台的异常检测与定位装置,参见图3,包括:
延迟信息获取单元201,用于获取各容器组件的tcp延迟信息;
状态信息获取单元202,用于通过滑动窗口累积和异常检测算法对各容器组件的tcp延迟信息进行分析,获取各组件的状态信息并生成组件状态信息键值对;
组件异常子图构建单元203,用于通过组件状态信息键值对构造组件异常子图;
异常定位单元204,用于根据组件异常子图定位出异常发生的容器组件节点。
本发明面向分布式容器云平台的异常检测与定位装置采用tcp延迟信息进行异常状态判断,降低了数据采集的开销,提高了异常状态判断的准确性与实时性。同时考虑到各组件之间,物理机与组件之间的干扰,提出了组件异常子图用以表示异常状态的传播,提高了异常定位的准确性。
作为优选的技术方案中,参见图4,装置还包括:
异常判断单元205,用于判断各异常根节点的mid是否相同,如果相同,则判断编号为mid的物理机发生异常。
实施例3
一种存储介质,存储介质存储有能够实现上述任意一项应用于分布式容器云平台的异常检测与定位方法的程序文件。
实施例4
一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一项的应用于分布式容器云平台的异常检测与定位方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的系统实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。