一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

获取微服务健康状态指标的方法和微服务异常诊断方法与流程

2021-10-03 11:15:00 来源:中国专利 TAG:
获取微服务健康状态指标的方法和微服务异常诊断方法与流程

本发明涉及微服务领域,具体涉及获取微服务健康状态指标的方法和微服务异常诊断方法。

背景技术

计算机技术的飞速发展带来更强的处理能力、更多的存储空间以及更快的网络环境。这使得应用可以为更多的人群服务,面临更大的负载压力。随着应用内部逻辑复杂性的不断提升,其开发和运维面临着越来越多的挑战。为了降低开发和运维的成本,越来越多的应用开始以微服务框架来实现业务的开发与部署。微服务将应用的功能拆分为若干个细小的功能模块。各个功能模块之间通过网络进行交互。然而,随着微服务模块的细分,微服务的稳定性也面临较大的挑战。单个应用可能由几十个或上百个微服务模块构成,各个微服务模块异构,这使得微服务经常会面临各种异常。

为了提升微服务的可用性,降低微服务异常恢复的开销,现有的工作针对微服务异常诊断进行了深入的研究。现有的部分工作通过对微服务模块的增加、删除,自动化的注入某些特定的异常,自定义测试场景等方法来验证微服务的稳定性与鲁棒性,针对可能存在异常的微服务模块提出单点异常。上述的方法大多只实现了微服务性能的测试以及单点的异常诊断,未能对微服务异常的根因做出分析。还有部分工作通过构建微服务的调用关系或依赖关系的方式来实现微服务异常的根因定位。但是,这些方法的微服务关系图的构建缺乏普适性。它们要么需要数据中有特定的信息支持,要么关系图的构建需要大量的人工参与,因而存在关系图构建效率低、应用场景受限的缺点。

微服务模块之间通过网络交互完成复杂的业务。这些研究工作有些针对微服务本身,将各个微服务模块看做是独立的点进行单独的分析与研究。另外一些充分考虑微服务之间的交互特征,试图构建微服务的调用关系来实现微服务异常的根因定位。按照其是否使用关联诊断,可以将上述研究工作划分为两大类:单体诊断类及根因定位类。

单体诊断类主要关注各个微服务模块的稳定性、模块性能以及是否具有行为异常。这些方法大多使用系统的硬件数据或日志数据作为数据输入指标。Düllmann(2017)[1]研究了微服务在云端的性能变化情况。它将云端部署的微服务模块做定时的增加和删除来观察这种架构的变化对微服务模块整体性能的影响。相同的作者,Düllmann and van Hoorn(2017)[2]提出了一种定义微服务拓扑的框架,通过异常的注入来验证微服务模块的鲁棒性。与之类似,Gremlin[3]提出了一种更加灵活的微服务异常验证方法。它可以让用户自定义一些测试场景,然后Gremlin将其翻译到相应的网络环境中,实现微服务的测试和诊断。然而,这些研究方法大多针对微服务模块本身、或微服务网络进行诊断,而无法对异常的根因做出明确具体地分析。

根因定位类方法除了对微服务模块本身进行监控分析之外还需要考虑微服务模块间的交互特征。通过使用网络数据或日志数据等建立微服务模块间的调用关系拓扑图,从而实现微服务模块异常诊断的目的。TraceAnomaly[4]提出了一种基于无监督学习的微服务异常根因定位方法。该方法首先跟踪任务运行的流程特征,通过各个模块间的响应时间来做出异常的诊断。它需要微服务模块间的数据交互包含UUID信息(例如某个任务的ID),因而在云计算平台中难以应用。Brandón[5]提出了一种基于调用关系构建的微服务根因诊断方法。该方法首先构建微服务调用关系拓扑图。依据拓扑关系图构建完备的异常模式库来完成微服务的异常诊断。然而,该拓扑的构建需要专家在对系统微服务模块做深入了解后协助构建,因而使用场景受到了严苛的限制。Sieve[6]提出了一种基于微服务调用关系构建的微服务根因异常定位方法。Sieve首先提供一个收集微服务模块产生数据的平台。从收集到的数据中过滤掉不重要的数据内容,而后猜测微服务模块间可能的依赖关系。这种方法构建的微服务调用关系存在着准确性低的缺点,在根因定位中的准确率较低。以上方法通过构建微服务调用关系拓扑图的方式来实现微服务异常的根因定位。然而上述方法存在着使用场景受限、拓扑图构建不准确的缺点。因而在微服务异常根因定位中存在着准确性低的缺点。

通过以上分析得知,现有的基于日志数据、硬件数据的微服务单点异常诊断方法可以针对不同的微服务模块进行适应性的诊断,因而诊断更具有针对性。然而,该类方法由于难以构建微服务模块间的依赖关系图,因而在进行微服务异常根因定位时存在较大的困难;基于网络数据的微服务异常诊断方法可以构建微服务的调用关系图,因而在进行异常根因定位时存在优势。然而在该类方法难以针对不同的微服务模块进行适应性分析,因而诊断针对性较差,诊断准确性有待提高。

参考文献:

[1]Düllmann T F.Performance anomaly detection in microservice architectures under continuous change[D].2017.

[2]Düllmann T F,van Hoorn A.Model-driven generation of microservice architectures forbenchmarking performance and resilience engineering approaches[C]//Proceedings of the8th ACM/SPEC on International Conference on Performance Engineering Companion.2017:171-172.

[3]Heorhiadi V,Rajagopalan S,Jamjoom H,et al.Gremlin:Systematic resilience testing ofmicroservices[C]//2016IEEE 36th International Conference on Distributed Computing Sys-tems(ICDCS).IEEE,2016:57-66.

[4]Liu P,Xu H,Ouyang Q,et al.Unsupervised detection of microservice trace anomalies throughservice-level deep bayesian networks[C]//2020IEEE 31st International Symposium on Soft-ware Reliability Engineering(ISSRE).IEEE,2020:48-58

[5]BrandónSoléM,Huélamo A,et al.Graph-based root cause analysis for service-orientedand microservice architectures[J].Journal of Systems and Software,2020,159:110432.

[6]Thalheim J,Rodrigues A,Akkus I E,et al.Sieve:Actionable insights from monitored metricsin microservices[J].arXiv preprint arXiv:1709.06686,2017.

[7]Chen T,Guestrin C.Xgboost:A scalable tree boosting system[C]//Proceedings of the 22ndacm sigkdd international conference on knowledge discovery and data mining.2016:785-794.



技术实现要素:

为解决上述现有技术在进行微服务异常诊断时存在的对不同的模块针对性不足、根因定位困难的问题,本发明提供一种基于流量画像的微服务网络健康状态量化方法,包括:

步骤H1),基于微服务模块间的交互数据包构建微服务调用关系图;

步骤H2),基于所述微服务调用关系图生成微服务节点的调用矩阵,其中所述调用矩阵的各个项表示微服务节点间发送的数据包数目;

步骤H3),基于所述调用矩阵利用卷积神经网络获取所述微服务的健康状态指标,其中所述卷积神经网络利用调用矩阵的样本训练生成。

优选的,所述调用关系图中的节点表示微服务节点,节点之间的边表示节点之间存在数据交互,边的数值表示对应节点之间传送的数据包个数;所述节点之间包括两条不同方向的有向边。

优选的,所述调用矩阵的行数和列数等于所述调用关系图中的节点数,第i行第j列的元素表示源节点i向目的节点j发送的数据包个数。

优选的,所述健康状态指标是利用卷积神经网络获取的所述微服务的网络状态向量。

本发明提供一种基于硬件状态的微服务单点异常诊断方法,包括:

步骤D1),基上述方法获取微服务的健康状态指标;

步骤D2),获得基于微服务所处物理机的硬件状态数据;

步骤D3),基于所述微服务的健康状态指标以及微服务所处物理机的硬件状态数据利用BP神经网络对微服务的异常进行判断,其中所述BP神经网络利用微服务的健康状态指标以及微服务所处物理机的硬件状态数据的样本数据训练。

优选的,所述步骤D2包括:

利用XGBoost算法过滤硬件状态数据,选取前N个硬件数据指标,其中,N为大于等于1的整数。

本发明提供一种基于微服务调用关系的根因定位方法,包括:

步骤R1,基于上述微服务异常诊断方法获取异常的微服务节点;

步骤R2,基于所述微服务调用关系图利用以下公式计算异常的微服务节点的影响因子;

其中,i,j表示异常节点,fi表示节点i的影响因子,di,j表示节点i到节点j的距离;

步骤R3,根据所述的异常的微服务节点的影响因子大小,取前K个节点作为根因节点,其中,K为大于等于1的整数。

优选的,当节点i到节点j可达,di,j为节点i到节点j的总跳数;当节点i到节点j不可达,di,j=M 1,M为所述微服务调用关系图中节点的总数。

本发明提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述任一项方法的步骤。

本发明提供一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任一项方法的步骤。

本发明具有如下特点和有益效果:本发明能够为复杂的微服务模块提供高速、高准确性的异常诊断。本发明首先根据微服务模块间的流量特征构建微服务调用关系图,并使用卷积神经网络对微服务模块的网络状态进行特征量化。同时,本发明采集微服务模块的硬件数据指标特征。由于硬件数据指标存在着大量冗余、无效的特征,因此本发明首先使用XGBoost[7]算法对硬件数据指标进行过滤选择。选择后的硬件数据指标与网络量化特征作为BP神经网络的输入,作微服务单点的异常检测。由于异常在微服务模块间具有空间传递性,因此单一的异常可能造成大范围的传播。为了发现微服务异常传播的起始节点,本发明使用微服务的调用关系图并结合单点异常检测的结果对所有异常的节点进行根因量化评分。本发明选择Top N作为根因候选集上报管理员。

附图说明

图1示出了根据本发明一个实施例的微服务调用关系图构建方法。

图2示出了根据本发明一个实施例的网络状态量化方法。

图3示出了根据本发明一个实施例的基于硬件状态的微服务单点异常诊断方法。

图4示出了根据本发明一个实施例的微服务根因定位方法。

图5示出了根据本发明一个实施例的系统架构图。

图6示出了本发明的一个实施例在Web Serving上的实验结果。

图7示出了本发明的一个实施例在Sock Shop上的准实验结果。

具体实施方式

下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

发明人在进行微服务异常诊断研究时发现,微服务异常与网络数据、硬件状态有着强相关性。微服务在异常时经常伴随着某些数据指标的剧烈波动。例如,在遇到网络异常时,微服务模块展现出异常的流量特征,而遇到微服务模块功能异常时通常伴随着硬件数据指标的剧烈波动。因此,对微服务模块的流量特征及硬件状态进行实时的监控可以有效的对微服务模块的异常进行快速、精准的诊断与定位。

发明人在对微服务模块异常时的网络数据特征进行分析时,发现微服务模块之间存在着复杂的调用关系。对这种调用关系进行精准的提取与分析是进行微服务异常根因定位的关键。因此,基于微服务的网络交互特征,本发明提出了基于流量画像的微服务调用关系构建方法。

根据本发明的一个实施例,本发明提供一种基于流量画像的微服务调用关系图构建方法。图1展示了根据本发明一个实施例的微服务调用关系构建方法。具体的构建方法如下。

首先采集各个微服务模块间的数据交互数据包,按照一定的时间窗口大小将收集到的数据包划分为若干个集合。对于每个集合分别构建其调用关系图。从数据包中提取所需要信息,根据本发明的一个实施例,所需要的信息主要包含三个部分:时间戳、源IP以及目的IP。其中,时间戳用于确定该数据包的时间信息,源IP以及目的IP则用于构建微服务调用关系图的有向边。微服务调用关系图的每个节点带表了一个具体的微服务模块。这些微服务模块代表了承载该微服务的载体,例如容器等。每两个节点间通过有向边进行连接。若节点M到节点N存在一条有向边,则节点M存在与节点N的数据交互,并且信息传递的方向是由M到N。对于集合中某一个数据包,本发明查找构建的拓扑图中是否存在由源IP到目的IP的有向边,若是存在则将该边的数值增加1。如果不存在则在图中增加该有向边并将该边的数值设定为1。通过这种方式,可以避免业务对调用关系图构建的影响,从而构建准确的调用关系图。

基于上述的微服务的调用关系图,本发明结合卷积神经网络模型对各个微服务模块的网络状态进行特征量化。本发明提供一种基于卷积神经网络的微服务网络状态量化方法。图2展示了根据本发明一个实施例的网络状态量化的方法。该方法以图1所构建的调用关系图作为基础,首先依据调用关系图生成调用矩阵。调用矩阵的规模由调用关系图的节点个数决定。若调用关系图具有N个节点,则产生N*N的调用矩阵。其中矩阵的行和列代表节点。矩阵的第i行第j列表示的是源为第i个节点、目的为第j个节点发送的数据包的个数。例如该图调用矩阵中的第1行第二列的数字表示的是节点A发送给节点B的数据包的个数为18。

调用矩阵的数据变化在一定程度上体现了微服务模块的健康状况。例如,当节点A发送到节点B的数据保持稳定,而节点B发送往节点A的数据量下降时,则很可能节点B产生了异常。为了学习矩阵中的数据变化特征,根据本发明的一个实施例,使用卷积神经网络作矩阵的特征提取与学习。卷积神经网络以N*N调用关系矩阵作为数据输入,输出产生一个N维的特征向量。在进行模型训练时,本发明从历史数据中学习到系统运行的正常模式或异常模式。其中1设定为异常状态,0设定为正常状态。当模型训练完成后,卷积神经网络可以输出一个N维的向量。其中向量的每一个数值对应于一个特定微服务节点。向量的数值为0到1之间的小数。标识了该微服务节点的健康状态。越是接近1则异常的可能性越是高,反之,则微服务节点越是健康。卷积神经网络的输出将作为异常判定的一个关键指标,在进行最终的异常判定中发挥巨大的作用。

以上发明人基于微服务模块间的数据交互构建了微服务调用关系图,并基于调用关系图生成调用矩阵,进而基于调用矩阵使用卷积神经网络提取了微服务的健康状态指标。

发明人在对微服务异常时的硬件数据指标分析时认识到:硬件数据指标反应了微服务模块及其所处的物理机的硬件状态,包含内存、CPU、磁盘、Cache等多个维度的信息;微服务模块具有多样性,不同的模块对于不同的数据指标敏感程度不同,例如CPU敏感型、内存敏感型等。为了对微服务模块做出更加准确的异常诊断,针对微服务模块的多样性,本发明提出了基于硬件状态和网络指标的微服务单点异常诊断方法,该方法基于硬件状态特征和网络指标,并结合BP神经网络对微服务模块训练不同的诊断模型,实现差异性诊断。

图3展示了根据本发明一个实施例的基于硬件状态和网络指标的微服务单点异常诊断方法。根据本发明的一个实施例,从Prometheus和PCM中收集信息。Prometheus是一套开源的系统监控和报警框架。PCM(Performance Counter Monitor)是针对intel平台处理器的资源利用率进行监控的工具。所收集的信息包含几十个甚至上百个数据指标,这些数据指标存在着大量的无用信息。例如,相似的数据指标、无用的数据指标以及无变化的数据指标等等。如果将所有的数据指标都加入到模型性中用作训练不仅会带来巨大的存储开销,而且模型的训练将花费巨大的时间代价。更重要的是,大量的数据指标不仅不会带来诊断准确率的提升,有时大量的干扰信息还会使诊断的准确性下降。为了降低数据指标数量过多带来的挑战,根据本发明的一个实施例,使用XGBoost算法做数据指标的过滤。XGBoost算法可以根据数据指标的波动情况对各个维度的数据指标做出评测、打分。分值的高低代表了该维度数据对最后的结果的影响程度。根据本发明的一个实施例,选用Top N的数据指标作为后续模型的输入。

根据本发明的一个实施例,按照一定的时间长度,将所有数据划分为若干个时间窗口,每个维度的硬件数据取该段时间内的平均值。经过XGBoost算法过滤后,得到该段时间内的N个硬件数据指标,同时将图2卷积神经网络产生的网络数据指标量化结果作为第N 1个数据指标,这些指标作为后续模型的输入。

硬件数据指标与网络数据指标结合后,需要提取正常状态或异常状态下的数据指标波动特征。根据本发明的一个实施例,使用BP神经网络来学习数据指标的变化特征。BP神经网络的输入为N 1维的数据向量。其中,N个硬件数据指标,1个网络数据指标。因此,BP神经网络包含N 1个节点的输入节点。除输入层外,该神经网络包含bp_layer层隐层,以及包含1个节点的输出层。其中,神经网络的每层的节点都有一条连接边与相邻层的任意节点相连。具体的拓扑结构如图3中BP神经网络所示。每条连接边的权值代表了该节点对最后结果的影响程度。在训练的初始阶段,将各个权值设定为-0.5到0.5之间的随机小数。BP神经网络的训练过程就是不断改变连接边权值的过程,从而使得神经网络的输出更加符合预期。BP神经网络输出代表了当前节点的异常情况。其输出为0-1之间的小数,数值越大代表了当前的节点异常的可能性越高。

为了进一步缩小异常的范围,找到异常在时间或空间上传播的起点,本发明使用微服务调用关系图并结合单点异常诊断方法,提供一种基于微服务调用关系的根因定位方法,图4示出了根据本发明一个实施例的根因定位方法。如图4中所示,包含6个节点,每个节点代表一个微服务模块,节点之间通过有向边连接。双向箭头代表了双向数据通信,而单向箭头代表了数据通信仅朝一个方向进行。节点B、C、E表示微服务单点检测时检测到的异常节点。为了对该三个节点进行根因分析,首先对所有的异常节点进行影响因子fi计算,其中i为节点标识,影响因子的计算公式如下:

其中di,j表示节点i到节点j的距离。距离的计算分为以下两种情况:

1)若节点i到节点j可达,则di,j为节点i到节点j的总跳数;

2)若节点i到节点j不可达,则di,j=M 1,其中M为当前图中节点的总个数。j为所有检测到的异常节点,其中j≠i。正如图中所示的例子。C到B的距离为2(C->A->B),C到E的距离为3(C->A->B->E)。所以,C的影响因子为0.2。同理可得,B的影响因子为0.5。E节点到B、C均为不可达,因此到两者的距离均为M 1,其中M=6,所以E的影响因子为1/14。将各个节点的影响因子计算得出后,按照从大到小的顺序排列,输出Top N节点,作为最可能是异常根因的候选集,供管理员参考。

本发明基于上述方法,提供一种基于流量特征与硬件状态的微服务异常诊断系统。系统总体架构如图5所示。首先从微服务集群中提取微服务模块间的网络交互信息。通过网络交互的流量特征,构建微服务调用关系图并使用卷积神经网络对微服务模块的网络状态进行特征量化。同时,将从微服务集群中收集的硬件数据指标与卷积神经网络对网络特征量化的结果结合,并使用BP神经网络进行微服务单点异常检测。微服务单点异常检测将检测出所有可能存在异常的微服务模块。为了进一步缩小异常的范围,找到异常在时间或空间上传播的起点,本发明使用微服务的调用关系及单点异常检测的结果进行微服务异常的根因定位。根因定位时将对所有的异常模块进行量化打分,根据打分的结果选择Top N作为根因候选集合上报管理员。

本发明在开源微服务框架Web Serving和Sock Shop上进行了实验。实验根据微服务模块间的流量特征构建微服务调用关系图,并使用卷积神经网络对微服务模块的网络状态进行特征量化。同时,采集微服务模块的硬件数据指标特征,使用XGBoost算法对硬件数据指标进行过滤选择,剔除大量冗余、无效的特征。选择后的硬件数据指标与网络量化特征作为BP神经网络的输入,用于微服务单点的异常检测。然后使用微服务的调用关系图并结合单点异常检测的结果对所有异常的节点进行根因量化评分,选择Top N作为根因候选集。图6示出了本发明的一个实施例在Web Serving上的实验结果,图7示出了本发明的一个实施例在Sock Shop上的实验结果,其中Ateller表示本发明。实验结果表明,相比于现有方法,本发明的方法具有更高的诊断准确性,F-Measure最多提升了17%。

应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜