logo好方法网

一种物联网故障检测方法、检测系统、存储介质


技术摘要:
本发明属于物联网微服务技术领域,公开了一种物联网故障检测方法、检测系统、存储介质,分析物联网应用中的多种故障类型,设计相应的故障注入方法,并收集产生故障的应用中的环境配置和内部状态信息。对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法进  全部
背景技术:
目前,设备资源有限、微服务粒度小、交互复杂且动态等原因导致基于微服务构造 的物联网应用易发生故障,且故障在测试环节不易复现,因此如何通过应用的运行状态准 确判断故障的位置和类型是国内外学者关注的焦点。 常见的四种故障定位的方法有:程序切片、程序谱、图挖掘以及特定模型。程序切 片是一种程序分解方法,根据需求截取特定程序片段,其按照构成方式,分为静态和动态两 种,静态切片截取程序控制流和过程之间的调用关系,动态切片考虑程序的执行轨迹;程序 谱描述程序语句在执行中包含的信息和特征,通过计算每个元素的可疑度进行故障定位; 基于图挖掘的故障定位通过构建程序的动态调用轨迹,使用特定的算法实现故障定位;基 于模型的故障定位是指提出一种适用于特定程序的模型,通过定义故障类型和故障模型判 断程序中是否存在故障。这四种方法侧重于关注单体应用程序出现的故障,不适用于基于 微服务的分布式物联网应用,更不适用于分析特定物联网应用的微服务故障。 近年来,许多分布式系统中的故障定位方法被提出,如通过将数据来源的概念扩 展到分布式系统的状态机领域提出了wat-provenance,对于任意状态机,  wat-provenance 能够描述在给定输入时状态机产生特定输出的原因,通过这种方法,开发人员能够根据分 布式系统中发生的事件进行故障推理等。 通过上述分析,现有技术存在的问题及缺陷为: (1)现有技术均没有考虑由于微服务粒度小、配置复杂和动态交互等特点,因此不 适用于微服务系统的故障诊断。 (2)物联网场景下应用的故障诊断,设备资源有限导致应用发生故障时,微服务系 统日志显示的信息较少,不能准确预测故障的位置和类型。 解决以上问题及缺陷的难度为:物联网设备资源有限,设备电量不足导致微服务 意外终止,设备或者用户的移动导致微服务质量下降从而导致不满足用户需求;动态的网 络环境导致微服务动态加入或者离开应用;微服务系统内部复杂,其粒度小、数量多、配置 复杂、交互动态。例如,Netflix的在线服务系统涉及到的服务调用有99.7%是服务的内部 调用,Amazon平均使用100-200个微服务构建一个页面;微服务系统配置复杂,配置时涉及 到微服务实例及其运行环境和虚拟机的配置。由于这原因出现的故障不属于程序逻辑故 障,在测试阶段难以发现和修改,应用发生故障后通常依靠开发者进行代码审查和调试进 行修复,然而由于微服务运行环境和网络环境的动态性使应用故障复现困难,因此应用故 障难以提前消除。 解决以上问题及缺陷的意义为:微服务数量多,交互复杂,物联网设备资源有限, 提高动态环境下物联网应用的可靠性是当前分析的重中之重,本发明聚焦物联网场景下应 5 CN 111581036 A 说 明 书 2/11 页 用的故障诊断问题,实现应用的稳定运行。
技术实现要素:
为了解决现有技术存在的问题,本发明提供了一种物联网故障检测方法、检测系 统、存储介质。 本发明是这样实现的,一种物联网故障检测方法,所述物联网故障检测方法包括: 分析物联网应用中的多种故障类型,并收集多种故障类型应用中的环境配置和内 部状态信息; 对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确 分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。 进一步,所述内部状态信息的获取过程为:在应用的测试阶段注入多实例故障、配 置故障、异步故障以及物联网设备故障四种类型的故障并执行故障应用,故障产生时,收集 应用在执行状态中内部状态信息,将这些信息存入数据库。 进一步,所述树形结构的微服务状态表示法包括:,通过监控应用执行,得到应用 的微服务调用链和微服务的环境配置,树形结构的微服务状态包括: 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个故障类型和故障位置。 进一步,所述物联网故障检测方法进一步包括: 步骤一,分析基于微服务的物联网应用中产生的故障,根据故障的不同特点设计 故障注入方法; 步骤二,在物联网微服务的不同位置利用不同的注入方法引入不同类型的故障, 手动修复不能成功编译的微服务,设计相应的测试用例; 步骤三,执行故障版本的应用,记录产生故障时微服务的环境配置、应用的调用 链、产生的故障类型以及故障的位置信息,将应用的微服务调用关系和配置信息以树形结 6 CN 111581036 A 说 明 书 3/11 页 构进行分析,所述树形结构为调用树,将调用树以多维有序序列的形式存入数据库,完成数 据库的构建; 步骤四,生产环境中应用产生故障时,分析微服务的配置和微服务调用链,通过对 比分析调用树得出存在的故障类型和故障位置并返回给开发者。 进一步,所述步骤三中,对于具有多实例故障的应用,执行期间多次改变故障微服 务实例的数量,其他微服务实例以默认的数量运行; 对于具有配置故障的应用,执行期间多次改变故障微服务、所在的容器和物理服 务器的环境配置,其他微服务以默认的配置运行; 对于具有异步故障的应用,改变微服务的调用顺序以产生该故障,在生产环境中, 异步调用的微服务数目不超过5个; 对于具有物联网设备故障的应用,更换设备电池能源设备多次执行应用,其他微 服务的环境配置和实例数目不变; 所述步骤四中,调用树由节点及节点之间的关系组成,节点包括微服务实例及环 境信息;通过测量两序列的最长公共子序列表达节点之间的相似度,节点之间的关系确定 为多维有序序列,并使用动态时间规整比较多维有序序列之间的相似度。 进一步,所述物联网故障检测方法收集故障应用的微服务调用关系和环境配置信 息,将应用的微服务调用关系和配置信息以树形结构描述,调用树节点之间的关系由应用 逻辑确定的微服务之间的调用关系决定,通过测量两序列的最长公共子序列表达节点之间 的相似度,使用动态时间规整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 ],为了比较序列之间的相似度,利用等式归一化公共子序列的长度: 计算最长公共子序列算法复杂度是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); 7 CN 111581036 A 说 明 书 4/11 页 收集微服务的环境配置以及应用在运行状态中微服务的调用状况,将其表示为调 用树,利用调用树比较方法,比较与数据库中存储的调用树的相似度,根据用户喜好,推荐 出相似度最高的K个故障类型和故障位置; 故障诊断算法定义两个长度为K的数组存储疑似故障的类型和位置,遍历故障数 据库DB中的每一条记录,计算目标故障树T与数据库中每一条记录f之间的相似度,将选择 出的前K个疑似故障的类型和位置返回给开发者,定位故障的位置并判断故障的类型。 本发明的另一目的在于提供一种物联网故障检测系统包括: 测试用例构建模块,在物联网微服务的不同位置引入不同类型的故障,手动修复 不能成功编译的微服务,设计相应的测试用例,执行故障版本的应用; 信息收集模块,执行应用期间,记录产生故障时应用微服务的环境配置、微服务调 用链、产生的故障类型以及故障的位置信息; 数据库构建模块,将收集到的信息描述为树形结构进行分析,所述树形结构为调 用树,将调用树以多维有序序列的形式存入数据库; 故障类型和故障位置获取模块,生产环境中产生故障时,分析微服务的配置和微 服务调用链,通过调用树对比分析调用链路得出存在的故障类型和故障位置并进行发送。 本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程 序使电子设备执行所述任意一项所述物联网故障检测方法,包括: 通过故障注入方法分析物联网应用中的多种故障类型,并收集多种故障类型应用 中的环境配置和内部状态信息; 对获取的环境配置和内部状态信息利用树形结构的微服务状态表示法,进行准确 分析,同时利用调用树之间的相似度计算方法检测应用中的多种故障类型。 结合上述的所有技术方案,本发明所具备的优点及积极效果为: 本发明首先提出一种基于故障注入方法的故障诊断类型,分析了基于微服务构造 的物联网应用中常见的四种故障类型,针对四种不同的故障,设计相应的故障注入方法,收 集故障应用的环境配置和内部状态信息,提出一种树形结构的微服务状态表示法,实现了 应用内部状态准确描述,提出一种调用树之间的相似度计算方法,检测应用的故障类型,通 过实验验证了本发明方法的可行性。 本发明能够帮助开发人员快速定位故障并明确故障类型,减少修复故障的时间, 降低故障对物联网应用的用户及行业带来的消极影响。 本发明能够克服传统故障诊断方法缺少对微服务特点分析造成的诊断准确率低 的缺点,且面向物联网领域的应用提出一种检测准确率高的故障诊断方法。 附图说明 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使 用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的 附图。 图1是本发明实施例提供的物联网故障检测方法流程图。 图2是本发明实施例提供的基于微服务调用链的故障诊断(物联网故障检测方法) 8 CN 111581036 A 说 明 书 5/11 页 原理图。 图3是本发明实施例提供的微服务调用链路建模原理图。 图4是本发明实施例提供的故障注入原理图。 图5是本发明实施例提供的选取数据库中top  5故障诊断的准确率图。 图6是本发明实施例提供的k值对故障位置准确率的影响图。 图7是本发明实施例提供的k值对故障类型准确率的影响图。
分享到:
收藏