CN111581036B - 一种物联网故障检测方法、检测系统、存储介质 - Google Patents
一种物联网故障检测方法、检测系统、存储介质 Download PDFInfo
- Publication number
- CN111581036B CN111581036B CN202010245532.7A CN202010245532A CN111581036B CN 111581036 B CN111581036 B CN 111581036B CN 202010245532 A CN202010245532 A CN 202010245532A CN 111581036 B CN111581036 B CN 111581036B
- Authority
- CN
- China
- Prior art keywords
- fault
- micro
- application
- service
- calling
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2247—Verification or detection of system hardware configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于物联网微服务技术领域,公开了一种物联网故障检测方法、检测系统、存储介质,分析物联网应用中的多种故障类型,设计相应的故障注入方法,并收集产生故障的应用中的环境配置和内部状态信息。对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。本发明提出了基于故障注入方法的故障诊断框架及树形结构的微服务状态表示法,实现了应用内部状态准确描述,并提出了一种调用树之间的相似度计算方法,检测应用的故障类型,通过实验验证了本发明方法的可行性。
Description
技术领域
本发明属于物联网微服务技术领域,尤其涉及一种物联网故障检测方法、检测系统、存储介质及物联网设备。
背景技术
目前,设备资源有限、微服务粒度小、交互复杂且动态等原因导致基于微服务构造的物联网应用易发生故障,且故障在测试环节不易复现,因此如何通过应用的运行状态准确判断故障的位置和类型是国内外学者关注的焦点。
常见的四种故障定位的方法有:程序切片、程序谱、图挖掘以及特定模型。程序切片是一种程序分解方法,根据需求截取特定程序片段,其按照构成方式,分为静态和动态两种,静态切片截取程序控制流和过程之间的调用关系,动态切片考虑程序的执行轨迹;程序谱描述程序语句在执行中包含的信息和特征,通过计算每个元素的可疑度进行故障定位;基于图挖掘的故障定位通过构建程序的动态调用轨迹,使用特定的算法实现故障定位;基于模型的故障定位是指提出一种适用于特定程序的模型,通过定义故障类型和故障模型判断程序中是否存在故障。这四种方法侧重于关注单体应用程序出现的故障,不适用于基于微服务的分布式物联网应用,更不适用于分析特定物联网应用的微服务故障。
近年来,许多分布式系统中的故障定位方法被提出,如通过将数据来源的概念扩展到分布式系统的状态机领域提出了wat-provenance,对于任意状态机,wat-provenance能够描述在给定输入时状态机产生特定输出的原因,通过这种方法,开发人员能够根据分布式系统中发生的事件进行故障推理等。
通过上述分析,现有技术存在的问题及缺陷为:
(1)现有技术均没有考虑由于微服务粒度小、配置复杂和动态交互等特点,因此不适用于微服务系统的故障诊断。
(2)物联网场景下应用的故障诊断,设备资源有限导致应用发生故障时,微服务系统日志显示的信息较少,不能准确预测故障的位置和类型。
解决以上问题及缺陷的难度为:物联网设备资源有限,设备电量不足导致微服务意外终止,设备或者用户的移动导致微服务质量下降从而导致不满足用户需求;动态的网络环境导致微服务动态加入或者离开应用;微服务系统内部复杂,其粒度小、数量多、配置复杂、交互动态。例如,Netflix的在线服务系统涉及到的服务调用有99.7%是服务的内部调用,Amazon平均使用100-200个微服务构建一个页面;微服务系统配置复杂,配置时涉及到微服务实例及其运行环境和虚拟机的配置。由于这原因出现的故障不属于程序逻辑故障,在测试阶段难以发现和修改,应用发生故障后通常依靠开发者进行代码审查和调试进行修复,然而由于微服务运行环境和网络环境的动态性使应用故障复现困难,因此应用故障难以提前消除。
解决以上问题及缺陷的意义为:微服务数量多,交互复杂,物联网设备资源有限,提高动态环境下物联网应用的可靠性是当前分析的重中之重,本发明聚焦物联网场景下应用的故障诊断问题,实现应用的稳定运行。
发明内容
为了解决现有技术存在的问题,本发明提供了一种物联网故障检测方法、检测系统、存储介质。
本发明是这样实现的,一种物联网故障检测方法,所述物联网故障检测方法包括:
分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内部状态信息;
对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。
进一步,所述内部状态信息的获取过程为:在应用的测试阶段注入多实例故障、配置故障、异步故障以及物联网设备故障四种类型的故障并执行故障应用,故障产生时,收集应用在执行状态中内部状态信息,将这些信息存入数据库。
进一步,所述树形结构的微服务状态表示法包括:,通过监控应用执行,得到应用的微服务调用链和微服务的环境配置,树形结构的微服务状态包括:
1)pr:部署微服务实例的物理机内存;
2)pc:部署微服务实例的物理机的CPU;
3)cr:微服务实例所在容器配置的内存;
4)cc:微服务实例所在容器配置的CPU;
5)rr:微服务实例运行时的内存消耗;
6)rc:微服务实例运行时的CPU消耗;
7)cache:微服务实例运行时是否访问缓存;
8)in:当前物理机中部署的微服务实例的数目;
9)it:微服务实例的响应时间;
10)device:微服务实例是否和物联网设备通信;
其中参数pr,pc,cr,cc,rr,rc与配置故障相关,参数cache,in与多实例故障相关,参数it,device与物联网设备故障相关。
进一步,所述树形结构的微服务状态进一步包括:通过收集微服务之间的调用关系获得的除物联网应用发生故障时的运行状态。
进一步,所述调用树之间的相似度计算方法包括:收集微服务的环境配置以及应用在运行状态中微服务的调用状况,表示为调用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户端喜好,推荐出相似度最高的K个故障类型和故障位置。
进一步,所述物联网故障检测方法进一步包括:
步骤一,分析基于微服务的物联网应用中产生的故障,根据故障的不同特点设计故障注入方法;
步骤二,在物联网微服务的不同位置利用不同的注入方法引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例;
步骤三,执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用链、产生的故障类型以及故障的位置信息,将应用的微服务调用关系和配置信息以树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库,完成数据库的构建;
步骤四,生产环境中应用产生故障时,分析微服务的配置和微服务调用链,通过对比分析调用树得出存在的故障类型和故障位置并返回给开发者。
进一步,所述步骤三中,对于具有多实例故障的应用,执行期间多次改变故障微服务实例的数量,其他微服务实例以默认的数量运行;
对于具有配置故障的应用,执行期间多次改变故障微服务、所在的容器和物理服务器的环境配置,其他微服务以默认的配置运行;
对于具有异步故障的应用,改变微服务的调用顺序以产生该故障,在生产环境中,异步调用的微服务数目不超过5个;
对于具有物联网设备故障的应用,更换设备电池能源设备多次执行应用,其他微服务的环境配置和实例数目不变;
所述步骤四中,调用树由节点及节点之间的关系组成,节点包括微服务实例及环境信息;通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系确定为多维有序序列,并使用动态时间规整比较多维有序序列之间的相似度。
进一步,所述物联网故障检测方法收集故障应用的微服务调用关系和环境配置信息,将应用的微服务调用关系和配置信息以树形结构描述,调用树节点之间的关系由应用逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间的相似度,使用动态时间规整DTW比较序列之间的相似度,描述两个微服务调用链之间的相似度;
计算两个序列之间的最长公共子序列方法如下:
存在两个序列s,t∈∑s,其中|s|=m,|t|=n。Φ是(m+1)×(n+1)的矩阵,存储序列之间的最长公共子序列的长度,对1≤i≤m,1≤j≤n有:
计算最长公共子序列算法复杂度是O(n2);
使用动态时间规整DTW计算多维序列之间的相似度,定义多维序列X=(X1,X2,...,Xm)和Y=(Y1,Y2,...,Yn)之间的DTW相似度为Φ[m,n],定义Φ[i,j]是(m+1)×(n+1)的矩阵,存储两个多维序列X和Y之间的DTW相似度,Φ[i,j-1]和Φ[i-1,j]分别初始化为∞,并且Φ[0,0]=0;使用等式Φ[i,j]=min{Φ[i,j-1],Φ[i-1,j],Φ[i-1,j-1]+θ(xi,yj)}计算Φ[i,j],其中θ(xi,yj)=1-DTW(xi,yj);
将两棵调用树X和Y转换成多维序列,通过比较最长公共子序列比较节点之间的相似度,使用两次动态时间规整比较序列以及多维序列之间的相似度得到两棵树之间的相似度Sim=DTW(X,Y);
收集微服务的环境配置以及应用在运行状态中微服务的调用状况,将其表示为调用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户喜好,推荐出相似度最高的K个故障类型和故障位置;
故障诊断算法定义两个长度为K的数组存储疑似故障的类型和位置,遍历故障数据库DB中的每一条记录,计算目标故障树T与数据库中每一条记录f之间的相似度,将选择出的前K个疑似故障的类型和位置返回给开发者,定位故障的位置并判断故障的类型。
本发明的另一目的在于提供一种物联网故障检测系统包括:
测试用例构建模块,在物联网微服务的不同位置引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例,执行故障版本的应用;
信息收集模块,执行应用期间,记录产生故障时应用微服务的环境配置、微服务调用链、产生的故障类型以及故障的位置信息;
数据库构建模块,将收集到的信息描述为树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库;
故障类型和故障位置获取模块,生产环境中产生故障时,分析微服务的配置和微服务调用链,通过调用树对比分析调用链路得出存在的故障类型和故障位置并进行发送。
本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行所述任意一项所述物联网故障检测方法,包括:
通过故障注入方法分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内部状态信息;
对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
本发明首先提出一种基于故障注入方法的故障诊断类型,分析了基于微服务构造的物联网应用中常见的四种故障类型,针对四种不同的故障,设计相应的故障注入方法,收集故障应用的环境配置和内部状态信息,提出一种树形结构的微服务状态表示法,实现了应用内部状态准确描述,提出一种调用树之间的相似度计算方法,检测应用的故障类型,通过实验验证了本发明方法的可行性。
本发明能够帮助开发人员快速定位故障并明确故障类型,减少修复故障的时间,降低故障对物联网应用的用户及行业带来的消极影响。
本发明能够克服传统故障诊断方法缺少对微服务特点分析造成的诊断准确率低的缺点,且面向物联网领域的应用提出一种检测准确率高的故障诊断方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的物联网故障检测方法流程图。
图2是本发明实施例提供的基于微服务调用链的故障诊断(物联网故障检测方法)原理图。
图3是本发明实施例提供的微服务调用链路建模原理图。
图4是本发明实施例提供的故障注入原理图。
图5是本发明实施例提供的选取数据库中top 5故障诊断的准确率图。
图6是本发明实施例提供的k值对故障位置准确率的影响图。
图7是本发明实施例提供的k值对故障类型准确率的影响图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有技术均没有考虑由于微服务粒度小、配置复杂和动态交互等特点,因此不适用于微服务系统的故障诊断。物联网场景下应用的故障诊断,设备资源有限导致应用发生故障时,微服务系统日志显示的信息较少,不能准确预测故障的位置和类型。
针对现有技术存在的问题,本发明提供了一种物联网故障检测方法、检测系统、存储介质,下面结合附图对本发明作详细的描述。
本发明提供一种物联网故障检测方法包括:分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内部状态信息。
对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。
如图1,本发明提供的物联网故障检测方法具体包括:
S101:分析基于微服务的物联网应用中产生的故障,根据故障的不同特点设计故障注入方法;
S102:在物联网微服务的不同位置利用不同的注入方法引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例;
S103:执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用链、产生的故障类型以及故障的位置信息,将应用的微服务调用关系和配置信息以树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库,完成数据库的构建;
S104:生产环境中应用产生故障时,分析微服务的配置和微服务调用链,通过对比分析调用树得出存在的故障类型和故障位置并返回给开发者。所述步骤S103中,对于具有多实例故障的应用,执行期间多次改变故障微服务实例的数量,其他微服务实例以默认的数量运行。
对于具有配置故障的应用,执行期间多次改变故障微服务、所在的容器和物理服务器的环境配置,其他微服务以默认的配置运行.
对于具有异步故障的应用,改变微服务的调用顺序以产生该故障,在生产环境中,异步调用的微服务数目不超过5个。
对于具有物联网设备故障的应用,更换设备电池能源设备多次执行应用,其他微服务的环境配置和实例数目不变。
所述步骤S104中,调用树由节点及节点之间的关系组成,节点包括微服务实例及环境信息;通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系确定为多维有序序列,并使用动态时间规整比较多维有序序列之间的相似度。
本发明提供一种物联网故障检测系统包括:
测试用例构建模块,在物联网微服务的不同位置引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例,执行故障版本的应用;
信息收集模块,执行应用期间,记录产生故障时应用微服务的环境配置、微服务调用链、产生的故障类型以及故障的位置信息;
数据库构建模块,将收集到的信息描述为树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库;
故障类型和故障位置获取模块,生产环境中产生故障时,分析微服务的配置和微服务调用链,通过调用树对比分析调用链路得出存在的故障类型和故障位置并进行发送。作为优选实施例,本发明首先提出一种基于故障注入方法的故障诊断框架,分析了基于微服务构造的物联网应用中常见的四种故障类型,针对四种不同的故障,设计相应的故障注入方法,收集故障应用的环境配置和内部状态信息,提出一种树形结构的微服务状态表示法,实现了应用内部状态准确描述,提出一种调用树之间的相似度计算方法,检测应用的故障类型,通过实验验证了本方法的可行性。
构造故障应用的调用链路以及微服务配置的数据库,分析基于微服务的物联网应用中可能产生的故障,根据故障的不同特点将故障注入应用,执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用链、产生的故障类型以及故障的位置等信息,将其存入数据库,以完成数据库的构建。应用在生产环境中产生故障时,分析此时微服务的配置和微服务调用链,通过对比分析调用链路得出可能存在的故障类型和故障位置并将其报告给开发人员。
在物联网应用中微服务的不同位置引入不同类型的故障,手动修复不能成功编译的微服务。设计相应的测试用例,执行应用。对于具有多实例故障的应用,执行期间多次改变故障微服务实例的数量,其他微服务实例以默认的数量运行;对于具有配置故障的应用,执行期间多次改变故障微服务、其所在的容器和物理服务器的环境配置(内存限制、CPU限制),其他微服务以默认的配置运行;对于具有异步故障的应用,开发人员强制改变微服务的调用顺序以产生该故障,在生产环境中,通常异步调用的微服务数目不多(通常不超过5个),因此开发人员控制不同的微服务异步调用顺序以多次执行应用。对于具有物联网设备故障的应用,开发人员手动更换设备电池等能源设备多次执行应用,其他微服务的环境配置和实例数目等不变。通过多次执行带有隐藏故障的微服务,查看是否成功发生预定义的故障,验证故障注入的结果。由于故障的发生是一个概率事件,因此多次执行之后出现一次相应的故障即可认为故障注入成功。注入故障成功时,记录应用的每个微服务调用链以及相关的环境配置、微服务实例数目等信息,为后续的故障诊断方法提供信息。
在应用测试阶段,将多实例故障、配置故障、异步故障以及物联网设备故障四种类型的故障通过不同的方式注入到应用的不同位置得到应用的不同故障版本,收集故障应用的微服务调用关系和环境配置信息,将应用的微服务调用关系和配置信息以树形结构描述,即调用树。调用树由节点及节点之间的关系组成,节点包括微服务实例及其环境信息,节点之间的关系由应用逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系描述为多维有序序列,使用动态时间规整(Dynamic Time Warping,DTW)比较序列之间的相似度,进而描述两个服务之间的相似度。
测量节点之间的相似度即测量实例环境配置的序列之间的相似度,有许多方法测量两个序列之间的相似度,比如最长公共子序列、序列核、编辑距离等,本发明选用最长公共子序列表示序列之前的相似度。
如图2所示,本发明提出树形结构的微服务链表示方法和基于多维有序序列的微服务调用树的相似度检测方法,实现了故障应用的快速诊断,保障了应用的稳定运行。该方法构造故障应用的调用链路以及微服务配置的数据库,分析基于微服务的物联网应用中可能产生的故障,根据故障的不同特点将故障注入应用,执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用链、产生的故障类型以及故障的位置等信息,将其存入数据库,以完成数据库的构建。应用在生产环境中产生故障时,分析此时微服务的配置和微服务调用链,通过对比分析调用链路得出可能存在的故障类型和故障位置并将其报告给开发人员。
在本发明中,故障注入的方法(如图4)是在正常工作的应用中,将不同类型的故障引入应用的不同位置产生不同故障版本的应用。通过这种方法,开发者可以了解应用对不同故障的表现,提高应用的可靠性。本发明针对基于微服务构建的物联网应用中经常出现的四种不同的故障,有:多实例故障,配置故障,异步故障,物联网设备故障。针对不同的故障,设计不同的注入策略,将故障注入特定的微服务中,通过监控应用执行,得到应用的微服务调用链和微服务的环境配置,为生产环境中的应用故障诊断提供数据支撑。
在物联网应用中微服务的不同位置引入不同类型的故障,手动修复不能成功编译的微服务。设计相应的测试用例,执行应用。对于具有多实例故障的应用,执行期间多次改变故障微服务实例的数量,其他微服务实例以默认的数量运行;对于具有配置故障的应用,执行期间多次改变故障微服务、其所在的容器和物理服务器的环境配置(内存限制、CPU限制),其他微服务以默认的配置运行;对于具有异步故障的应用,开发人员强制改变微服务的调用顺序以产生该故障,在生产环境中,通常异步调用的微服务数目不多(通常不超过5个),因此开发人员控制不同的微服务异步调用顺序以多次执行应用。对于具有物联网设备故障的应用,开发人员手动更换设备电池等能源设备多次执行应用,其他微服务的环境配置和实例数目等不变。通过多次执行带有隐藏故障的微服务,查看是否成功发生预定义的故障,验证故障注入的结果。由于故障的发生是一个概率事件,因此多次执行之后出现一次相应的故障即可认为故障注入成功。注入故障成功时,记录应用的每个微服务调用链以及相关的环境配置、微服务实例数目等信息,为后续的故障诊断方法提供信息。
当分布式系统产生故障时,相似的调用链路意味着相似的故障类型和故障位置。本发明基于该思想,收集物联网应用的下列信息,故障类型与微服务实例的数目、容器和微服务实例的环境配置等参数相关,本发明收集下列实例级别的参数表征微服务的内部运行环境。
1)pr:部署微服务实例的物理机内存。
2)pc:部署微服务实例的物理机的CPU。
3)cr:微服务实例所在容器配置的内存。
4)cc:微服务实例所在容器配置的CPU。
5)rr:微服务实例运行时的内存消耗。
6)rc:微服务实例运行时的CPU消耗。
7)cache:微服务实例运行时是否访问缓存。
8)in:当前物理机中部署的微服务实例的数目。
9)it:微服务实例的响应时间。
10)device:微服务实例是否和物联网设备通信。
其中参数pr,pc,cr,cc,rr,rc与配置故障相关,参数cache,in与多实例故障相关,参数it,device与物联网设备故障相关。按照(pr,pc,cr,cc,rr,rc,cache,in,it,device)收集上述微服务实例的参数,例如(32,8,1,1,0.5,0.5,1,3,5,1)是某微服务实例的环境信息,它表示部署该微服务实例的物理机的内存是32GB,CPU是8核,微服务实例配置的内存是1GB,CPU是1核,该微服务运行时的内存消耗是0.5GB,CPU消耗是0.5核,该微服务实例访问缓存,当前部署该微服务的物理机中部署的实例数目是3个,微服务的响应时间是5ms,该微服务与物联网设备直接通信。
上述参数只收集物联网应用运行中静态的环境,为了准确描述物联网应用发生故障时的运行状态,还需要收集微服务之间的调用关系。
在本发明中,物联网应用通过调用一系列微服务链完成用户请求,这些调用链可以通过一种树形结构描述,例如说明书配图3是某个应用微服务调用链路的示例,树中每个节点表示一个微服务实例,根节点是接收用户请求的微服务实例,有向边表示实例之间的调用关系,其中A到B的有向边表示A调用B,从图中可以看出共有6种调用关系。A与B、C、D都有调用关系,调用的顺序是B->C->D,当A完成对微服务实例B的调用后,会按照顺序依次调用微服务实例C和D。
将多实例故障、配置故障、异步故障以及物联网设备故障四种类型的故障通过不同的方式注入到应用的不同位置得到应用的不同故障版本,收集故障应用的微服务调用关系和环境配置信息,将应用的微服务调用关系和配置信息以树形结构描述,以下简称调用树。
调用树由节点及节点之间的关系组成,节点包括微服务实例及其环境信息,节点之间的关系由应用逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系描述为多维有序序列,使用动态时间规整(Dynamic Time Warping,DTW)比较序列之间的相似度,进而描述两个微服务调用链之间的相似度。
将基于微服务的物联网应用常见的多实例故障、配置故障、异步故障以及物联网设备故障通过四种特定的方法注入到应用中,收集应用在产生故障时微服务的配置信息以及运行状态,将其存入数据库中;当应用在生产环境中产生故障时,同理,收集微服务的环境配置以及应用在运行状态中微服务的调用状况,将其表示为调用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户喜好,推荐出相似度最高的K个故障类型和故障位置。
下面结合实施例对本发明的技术方案作进一步描述。
在本发明中,收集故障应用的微服务调用关系和环境配置信息,将应用的微服务调用关系和配置信息以树形结构描述,调用树节点之间的关系由应用逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间的相似度,使用动态时间规整(DynamicTimeWarping,DTW)比较序列之间的相似度,进而描述两个微服务调用链之间的相似度。
计算两个序列之间的最长公共子序列方法如下:
存在两个序列s,t∈∑s,其中|s|=m,|t|=n。Φ是(m+1)×(n+1)的矩阵,存储序列之间的最长公共子序列的长度,对1≤i≤m,1≤j≤n有:
其中Φ[i,0]=0,Φ[0,j]=0。则序列s和t的最长公共子序列的长度是lcs(s,t)=Φ[m,n],为了比较序列之间的相似度,利用等式(3-2)归一化公共子序列的长度:
计算最长公共子序列算法复杂度是O(n2)。
使用动态时间规整DTW计算多维序列之间的相似度,定义多维序列X=(X1,X2,...,Xm)和Y=(Y1,Y2,...,Yn)之间的DTW相似度为Φ[m,n],同理,定义Φ[i,j]是(m+1)×(n+1)的矩阵,存储两个多维序列X和Y之间的DTW相似度,Φ[i,j-1]和Φ[i-1,j]分别初始化为∞,并且Φ[0,0]=0。使用等式Φ[i,j]=min{Φ[i,j-1],Φ[i-1,j],Φ[i-1,j-1]+θ(xi,yj)}计算Φ[i,j],其中θ(xi,yj)=1-DTW(xi,yj)。
本发明将两棵调用树X和Y转换成多维序列,通过比较最长公共子序列比较节点之间的相似度,使用两次动态时间规整比较序列以及多维序列之间的相似度得到两棵树之间的相似度Sim=DTW(X,Y)。
收集微服务的环境配置以及应用在运行状态中微服务的调用状况,将其表示为调用树,利用上述调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户喜好,推荐出相似度最高的K个故障类型和故障位置。伪代码如下所示:
故障诊断算法定义两个长度为K的数组存储疑似故障的类型和位置,遍历故障数据库DB中的每一条记录,计算目标故障树T与数据库中每一条记录f之间的相似度,将选择出的前K个疑似故障的类型和位置返回给开发者,帮助开发者快速定位故障的位置并判断故障的类型。
下面结合具体应用及结果对本发明的技术效果作详细的描述。
收集3000条应用产生故障时的系统日志,分析应用的微服务调用链及环境配置信息。分析其中2100条日志,将其对应的调用树、故障类型和故障位置存入数据库中,利用其余900条日志信息记录的系统状态测试测试故障诊断方法的准确度。图5为数据库选取调用树之间的相似度为top k(k=5)时,故障诊断的准确度。
从图5可以看出,当k=5时,本发明方法判断基于微服务构造的物联网应用的四种类型故障准确率均达到90%以上,能够有效判断应用产生故障时的故障类型和位置。
图6和图7描述k的不同值对故障定位准确率以及故障类型判断准确率的影响。
从图6和图7可以看出可以看出,k值越大,故障诊断的准确率越高。当k=5时,从数据库中选择的记录的数目包括k=1时的记录,因此,故障诊断的准确率随着k值的增大而增大。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本实用新型各个实施例或者实施例的某些部分所述的方法。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (9)
1.一种物联网故障检测方法,其特征在于,所述物联网故障检测方法包括:
通过故障注入方法分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内部状态信息;
对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型;
所述物联网故障检测方法收集故障应用的微服务调用关系和环境配置信息,将应用的微服务调用关系和配置信息以树形结构描述,调用树节点之间的关系由应用逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间的相似度,使用动态时间规整DTW比较序列之间的相似度,描述两个微服务调用链之间的相似度;
计算两个序列之间的最长公共子序列方法如下:
存在两个序列s,t∈∑s,其中|s|=m,|t|=n, Φ是(m+1)×(n+1)的矩阵,存储序列之间的最长公共子序列的长度,对1≤i≤m,1≤j≤n有:
计算最长公共子序列算法复杂度是O(n2);
使用动态时间规整DTW计算多维序列之间的相似度,定义多维序列X=(X1,X2,...,Xm)和Y=(Y1,Y2,...,Yn)之间的DTW相似度为Φ[m,n],定义Φ[i,j]是(m+1)×(n+1)的矩阵,存储两个多维序列X和Y之间的DTW相似度,Φ[i,j-1]和Φ[i-1,j]分别初始化为∞,并且Φ[0,0]=0;使用等式Φ[i,j]=min{Φ[i,j-1],Φ[i-1,j],Φ[i-1,j-1]+θ(xi,yj)}计算Φ[i,j],其中θ(xi,yj)=1-DTW(xi,yj);
将两棵调用树X和Y转换成多维序列,通过比较最长公共子序列比较节点之间的相似度,使用两次动态时间规整比较序列以及多维序列之间的相似度得到两棵树之间的相似度Sim=DTW(X,Y);
收集微服务的环境配置以及应用在运行状态中微服务的调用状况,将其表示为调用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户喜好,推荐出相似度最高的K个故障类型和故障位置;
故障诊断算法定义两个长度为K的数组存储疑似故障的类型和位置,遍历故障数据库DB中的每一条记录,计算目标故障树T与数据库中每一条记录f之间的相似度,将选择出的前K个疑似故障的类型和位置返回给开发者,定位故障的位置并判断故障的类型。
2.如权利要求1所述的物联网故障检测方法,其特征在于,所述内部状态信息包括:在应用的测试阶段注入多实例故障、配置故障、异步故障以及物联网设备故障类型的故障并执行故障应用,故障产生时,收集应用在执行状态中的配置信息及微服务调用链,将这些信息存入数据库。
3.如权利要求1所述的物联网故障检测方法,其特征在于,所述树形结构的微服务状态表示法包括:将故障注入特定的微服务中,通过监控应用执行,得到应用的微服务调用链和微服务的环境配置,树形结构的微服务状态包括:
1)pr:部署微服务实例的物理机内存;
2)pc:部署微服务实例的物理机的CPU;
3)cr:微服务实例所在容器配置的内存;
4)cc:微服务实例所在容器配置的CPU;
5)rr:微服务实例运行时的内存消耗;
6)rc:微服务实例运行时的CPU消耗;
7)cache:微服务实例运行时是否访问缓存;
8)in:当前物理机中部署的微服务实例的数目;
9)it:微服务实例的响应时间;
10)device:微服务实例是否和物联网设备通信;
其中参数pr,pc,cr,cc,rr,rc与配置故障相关,参数cache,in与多实例故障相关,参数it,device与物联网设备故障相关。
4.如权利要求3所述的物联网故障检测方法,其特征在于,所述树形结构的微服务状态进一步包括:通过收集微服务之间的调用关系获得物联网应用发生故障时的运行状态。
5.如权利要求1所述的物联网故障检测方法,其特征在于,所述调用树之间的相似度计算方法包括:收集微服务的环境配置以及应用在运行状态中微服务的调用状况,表示为调用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户端喜好,推荐出相似度最高的K个故障类型和故障位置。
6.如权利要求1所述的物联网故障检测方法,其特征在于,所述物联网故障检测方法进一步包括:
步骤一,分析基于微服务的物联网应用中产生的故障,根据故障的不同特点设计故障注入方法;
步骤二,在物联网微服务的不同位置利用不同的注入方法引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例;
步骤三,执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用链、产生的故障类型以及故障的位置信息,将应用的微服务调用关系和配置信息以树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库,完成数据库的构建;
步骤四,生产环境中应用产生故障时,分析微服务的配置和微服务调用链,通过对比分析调用树得出存在的故障类型和故障位置并返回给开发者。
7.如权利要求6所述的物联网故障检测方法,其特征在于,所述步骤二中,对于具有多实例故障的应用,执行期间多次改变故障微服务实例的数量,其他微服务实例以默认的数量运行;
对于具有配置故障的应用,执行期间多次改变故障微服务、所在的容器和物理服务器的环境配置,其他微服务以默认的配置运行;
对于具有异步故障的应用,改变微服务的调用顺序以产生该故障,在生产环境中,异步调用的微服务数目不超过5个;
对于具有物联网设备故障的应用,更换设备电池能源设备多次执行应用,其他微服务的环境配置和实例数目不变;
所述步骤三中,调用树由节点及节点之间的关系组成,节点包括微服务实例及环境信息;通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系确定为多维有序序列,并使用动态时间规整比较多维有序序列之间的相似度。
8.一种如权利要求1~7任意一项所述物联网故障检测方法的物联网故障检测系统,其特征在于,所述物联网故障检测系统包括:
测试用例构建模块,在物联网微服务的不同位置引入不同类型的故障,手动修复不能成功编译的微服务,设计相应的测试用例,执行故障版本的应用;
信息收集模块,执行应用期间,记录产生故障时应用微服务的环境配置、微服务调用链、产生的故障类型以及故障的位置信息;
数据库构建模块,将收集到的信息描述为树形结构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库;
故障类型和故障位置获取模块,生产环境中产生故障时,分析微服务的配置和微服务调用链,通过调用树对比分析调用链路得出存在的故障类型和故障位置并进行发送。
9.一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行权利要求1~7任意一项所述物联网故障检测方法,包括:
通过故障注入方法分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内部状态信息;
对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010245532.7A CN111581036B (zh) | 2020-03-31 | 2020-03-31 | 一种物联网故障检测方法、检测系统、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010245532.7A CN111581036B (zh) | 2020-03-31 | 2020-03-31 | 一种物联网故障检测方法、检测系统、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581036A CN111581036A (zh) | 2020-08-25 |
CN111581036B true CN111581036B (zh) | 2022-04-15 |
Family
ID=72126143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010245532.7A Active CN111581036B (zh) | 2020-03-31 | 2020-03-31 | 一种物联网故障检测方法、检测系统、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581036B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039747B (zh) * | 2020-09-11 | 2021-10-26 | 中国人民解放军国防科技大学 | 一种基于故障率预测的海量计算节点通信树的构建方法 |
CN112732476B (zh) * | 2021-01-26 | 2022-10-21 | 长威信息科技发展股份有限公司 | 一种基于微服务的故障定位分析方法及系统 |
CN113360361B (zh) * | 2021-08-11 | 2021-11-23 | 云智慧(北京)科技有限公司 | 一种分布式运维模拟系统的构建方法、装置及设备 |
CN113938407B (zh) * | 2021-09-02 | 2023-06-20 | 北京邮电大学 | 基于带内网络遥测系统的数据中心网络的故障检测方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018144060A1 (en) * | 2017-02-05 | 2018-08-09 | Intel Corporation | Microservice provision and management |
CN109961204A (zh) * | 2017-12-26 | 2019-07-02 | 中国移动通信集团浙江有限公司 | 一种微服务架构下业务质量分析方法和系统 |
CN110069380A (zh) * | 2019-03-20 | 2019-07-30 | 浙江工业大学 | 一种基于微服务的Web分布式软件演化与监控方法 |
CN110427275A (zh) * | 2019-07-11 | 2019-11-08 | 复旦大学 | 基于轨迹日志学习的微服务潜在错误与故障根源预测方法 |
CN110798502A (zh) * | 2019-09-18 | 2020-02-14 | 平安科技(深圳)有限公司 | 基于微服务框架的灰度发布方法、装置和计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9842045B2 (en) * | 2016-02-19 | 2017-12-12 | International Business Machines Corporation | Failure recovery testing framework for microservice-based applications |
-
2020
- 2020-03-31 CN CN202010245532.7A patent/CN111581036B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018144060A1 (en) * | 2017-02-05 | 2018-08-09 | Intel Corporation | Microservice provision and management |
CN109961204A (zh) * | 2017-12-26 | 2019-07-02 | 中国移动通信集团浙江有限公司 | 一种微服务架构下业务质量分析方法和系统 |
CN110069380A (zh) * | 2019-03-20 | 2019-07-30 | 浙江工业大学 | 一种基于微服务的Web分布式软件演化与监控方法 |
CN110427275A (zh) * | 2019-07-11 | 2019-11-08 | 复旦大学 | 基于轨迹日志学习的微服务潜在错误与故障根源预测方法 |
CN110798502A (zh) * | 2019-09-18 | 2020-02-14 | 平安科技(深圳)有限公司 | 基于微服务框架的灰度发布方法、装置和计算机设备 |
Non-Patent Citations (2)
Title |
---|
Fault Analysis and Debugging of Microservice;X. Zhou等;《 IEEE Transactions on Software Engineering》;20181218;第47卷(第2期);第243-260页 * |
一种基于执行轨迹监测的微服务故障诊断方法;王子勇等;《软件学报》;20170630;第28卷(第6期);第1435-1454页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111581036A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111581036B (zh) | 一种物联网故障检测方法、检测系统、存储介质 | |
EP2333669B1 (en) | Bridging code changes and testing | |
Yu et al. | Microrank: End-to-end latency issue localization with extended spectrum analysis in microservice environments | |
US10235277B2 (en) | Method of detecting false test alarms using test step failure analysis | |
WO2019179248A1 (zh) | 异常检测方法及装置 | |
US9507697B2 (en) | Completing functional testing | |
US9519571B2 (en) | Method for analyzing transaction traces to enable process testing | |
Maji et al. | Characterizing failures in mobile oses: A case study with android and symbian | |
Theisen et al. | Approximating attack surfaces with stack traces | |
CN112148586A (zh) | 机器辅助质量保证和软件改善 | |
CN115348159B (zh) | 基于自编码器和服务依赖图的微服务故障定位方法及装置 | |
Wu et al. | Performance diagnosis in cloud microservices using deep learning | |
Wang et al. | Fast outage analysis of large-scale production clouds with service correlation mining | |
US9489379B1 (en) | Predicting data unavailability and data loss events in large database systems | |
Zhang et al. | An empirical study of the impact of bad designs on defect proneness | |
Zhang et al. | Maximizing error injection realism for chaos engineering with system calls | |
US9811447B2 (en) | Generating a fingerprint representing a response of an application to a simulation of a fault of an external service | |
Cotroneo et al. | Enhancing failure propagation analysis in cloud computing systems | |
Brodie et al. | Automated problem determination using call-stack matching | |
US20230004487A1 (en) | System and method for anomaly detection and root cause automation using shrunk dynamic call graphs | |
Rohr | Workload-sensitive timing behavior analysis for fault localization in software systems | |
Flora et al. | A Study on the Aging and Fault Tolerance of Microservices in Kubernetes | |
CN117273171A (zh) | 深度学习框架适配方法、装置、计算机设备和存储介质 | |
Trubiani et al. | Automated detection of software performance antipatterns in Java-based applications | |
Chen et al. | Fault diagnosis for open source software based on dynamic tracking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |