CN115269357B - 一种基于调用链的微服务异常检测方法 - Google Patents
一种基于调用链的微服务异常检测方法 Download PDFInfo
- Publication number
- CN115269357B CN115269357B CN202211165473.8A CN202211165473A CN115269357B CN 115269357 B CN115269357 B CN 115269357B CN 202211165473 A CN202211165473 A CN 202211165473A CN 115269357 B CN115269357 B CN 115269357B
- Authority
- CN
- China
- Prior art keywords
- data
- encoder
- graph
- micro
- service
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 73
- 230000002159 abnormal effect Effects 0.000 claims abstract description 45
- 238000013528 artificial neural network Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 23
- 238000012549 training Methods 0.000 claims abstract description 23
- 238000007781 pre-processing Methods 0.000 claims abstract description 12
- 230000009467 reduction Effects 0.000 claims abstract description 5
- 239000011159 matrix material Substances 0.000 claims description 70
- 239000010410 layer Substances 0.000 claims description 69
- 239000013598 vector Substances 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000010606 normalization Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 230000004913 activation Effects 0.000 claims description 6
- 239000002356 single layer Substances 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000002360 preparation method Methods 0.000 claims description 3
- 238000000547 structure data Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000002474 experimental method Methods 0.000 description 5
- 230000036541 health Effects 0.000 description 4
- 102100034626 Germ cell nuclear acidic protein Human genes 0.000 description 2
- 101000995459 Homo sapiens Germ cell nuclear acidic protein Proteins 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001122767 Theaceae Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于调用链的微服务异常检测方法。所述方法包括以下步骤:对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;对预处理后的数据进行分类处理;使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本得到异常检测的结果。本发明能够同时发现服务质量异常和资源使用异常,且具有不依赖于标签数据、扩展性强、性能优的优点。
Description
技术领域
本发明属于计算机应用技术领域,尤其涉及一种基于调用链的微服务异常检测方法。
背景技术
微服务架构除了拥有动态扩展和独立部署的特点之外,还支持使用不同种类的编程语言,这使得微服务架构成为越来越多的电子商务网站部署其应用的最佳解决方案。例如京东在50万个容器的集群上提供了超过8000个应用和约34000个微服务,每天支持超过2500亿次基于RPC的微服务调用。对于用户来说,希望应用的响应时间越短越好,如果微服务系统出现错误,会给企业带来不可预知的经济损失。研究指出(O. Ibidunmoye, F. Hern´andez-Rodriguez, and E. Elmroth, “Performance anomaly detection andbottleneck identification,” ACM Computing Surveys(CSUR), vol. 48, no. 1, pp.1–35, 2015.),当用户请求的响应时间增加100ms时,电商网站的营业额就会下降1%,因此研究如何确保微服务系统的高可用性是十分重要的。
随着云计算的快速发展,微服务系统变得越来越庞大,微服务之间的依赖关系也变得错综复杂,业务需求更新迭代快使得传统静态的异常检测方法无法适用,迫切需要一种灵敏且适用范围广的微服务异常检测方法,来快速发现系统中存在的故障或潜在异常,保障微服务系统的可靠性和性能。
针对微服务异常检测的工作,目前研究学者已经提出了众多方法,中国专利文献CN113467421A“获取微服务健康状态指标的方法和微服务异常诊断方法”提出利用微服务所处物理机的硬件状态数据以及微服务的健康状态进行异常检测,该方法不适用于微服务部署在当下流行的虚拟化容器上的云环境场景,云环境复杂且变化多样,难以从物理机层面对微服务进行异常预测。中国专利文献CN109933452B“一种面向异常传播的微服务智能监测方法”提出通过使用代理的方式对微服务的调用进行监控,使用Lasso回归对所检测的度量值进行预测,大于设定阈值的则判定为异常,但该方法没有考虑到微服务所处环境带来的可能影响,无法发现微服务系统中潜在的性能影响因素。因此,如何构造适合分布式部署环境下微服务异常检测的方法仍旧是云计算智能运维的一项挑战。
发明内容
本发明的目的在于克服上述现有技术的不足,提供一种基于调用链的微服务异常检测方法,用属性图的形式融合微服务本身以及微服务所处环境的特征,通过图神经网络等模型对微服务系统状态进行评估,从而实现异常检测,及时降低或避免异常问题带来的损失。
本发明的目的至少通过如下技术方案之一实现。
一种基于调用链的微服务异常检测方法,包括以下步骤:
S1、对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;
S2、根据每条调用链中拥有的微服务种类对预处理后的数据进行分类处理;
S3、使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;
S4、使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;
S5、设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本,大于异常概率阈值的被认为是异常数据样本,反之则是正常数据样本,得到异常检测的结果。
进一步地,步骤S1中,所述调用链中所有微服务的响应时间指利用分布式链路追踪系统收集到的span数据中每个微服务对于用户请求的响应时间,若存在多个span数据的调用微服务与被调用微服务相同,则该微服务的响应时间为多个相同span数据的平均值;
所述微服务所在容器的性能指标包括微服务运行所在容器的CPU使用率、内存使用率、磁盘使用率和网络使用率。
进一步地,所述预处理包括缺失值处理、归一化处理和数据格式转换处理;
所述缺失值处理指对于容器的性能指标而言,间隔的缺失值即性能指标的某行或某列的连续缺失值不超过5个,采用最近的12个非缺失值进行线性插值补全修复;
所述数据格式转换处理指根据分布式链路系统收集到的span数据中的父span与子span之间的调用关系,构建服务调用拓扑图,再根据数据的时间戳以及微服务与容器的对应关系构建成属性图,属性图包括一个邻接矩阵A和一个特征矩阵X,其中所述邻接矩阵表示一次用户请求的微服务请求路径,也就是服务调用拓扑图;特征矩阵表示一次用户请求中所有微服务的一系列特征,包括微服务自身的响应时间以及对应span时间戳时刻所处容器的性能指标。
进一步地,步骤S2中,预处理后的数据样本,依据每个数据样本所包括的微服务种类生成0-1编码,即一次用户请求中访问的微服务标记为1,未访问的微服务标记为0,利用K-Means++聚类算法对于所有数据样本的0-1编码进行聚类,得到多个聚类簇,基于同一种业务的所有用户请求路径相似的假设,每一个数据样本的类别代表整个微服务系统所提供的一种业务类型;对于每一个数据样本的类别自适应的去除没有访问的微服务节点及其对应特征,以降低计算复杂度,加快模型训练和检测速度。
进一步地,使用K-Means++聚类算法将预处理后的属性图数据进行聚类;K-Means
是经典的聚类算法之一,其核心思想是随机选取第一个聚类中心,在选取第个聚类中心
时,距离前个聚类中心越远的点被选中的概率就越高,其中;K-Means++聚
类过程中样本和聚类中心点的距离、样本点被选中为聚类中心的概率的计算分别
如公式(1)和公式(2)所示:
进一步地,步骤S3中,考虑到训练集中可能存在的噪声,对于每一个聚类簇中的数据样本,进一步的采用基于密度的聚类算法DBSCAN进行降噪处理,具体实施步骤如下:
将属性图中的特征矩阵X展开为一维向量(1,N*F),其中N表示微服务种类数,F表示微服务特征维度;基于同一种服务中所有正常请求的特征都相似的假设,采用基于密度的聚类算法能够提取出每一类服务的正常特征模,即将S2中分好类的训练数据集输入到基于密度的聚类算法中,只选择聚类结果中样本数量最多的一个簇作为异常检测模型训练所需要的数据集,降低异常样本对模型训练的影响。
进一步地,步骤S4中,基于图神经网络的异常检测模型包括图变分自编码器(VGAE)和基于LSTM自编码器(LSTM-AE)两个部分,图变分自编码器的目的是为了提取数据样本的拓扑特征,并检测是否存在拓扑结构异常,而LSTM自编码器的目的是为了学习数据样本在时间维度上的特征,并检测是否存在微服务相关特征异常;
进一步地,基于图神经网络的异常检测模型中的图变分自编码器(VGAE)部分包括编码器和解码器,编码器的目的是充分提取拓扑特征,并将拓扑特征映射到隐空间中,而解码器的目的是通过对提取的拓扑特征解码,重构输入数据样本的拓扑结构;
图变分自编码器(VGAE)的输入数据样本为其中
代表一次用户请求经过数据预处理得到的属性图,按照用户请求的时间顺序排序,,表示输入序列的长度,输入序列是基于请求时间排序;根据
属性图的组成,可以分为和,其中和分别代表对应的邻接矩阵和
特征矩阵,表示属性图的节点数,即微服务种类数,表示属性图的特征维度;
图变分自编码器(VGAE)是为图结构数据设计的,整体结构基于变分自动编码器
(VAE),图变分自编码器(VGAE)使用两层的图卷积层(GCN)作为编码器部分,将预处理得到
属性图的邻接矩阵和属性矩阵编码到隐藏层中;图变分自编码器(VGAE)的定义如下:
其中,和分别代表第一层GCN和第二层GCN的权重矩阵;X代表输
入的特征矩阵,使用作为第一层GCN输出的激活函数,和是第二层GCN的输
出值,分别代表近似后验的平均值和标准偏差,表示一个取样于正太分布的随
机变量,代表对称归一化的邻接矩阵,归一化公式如下:
其中,代表输入序列中输入数据样本的邻接矩阵,代表邻接矩阵对应
的度矩阵;通过两层的GCN进一步提取节点的拓扑特征,得到更为准确的微服务节点表示,
考虑到不同邻居节点对于节点自身的影响不同,采用图注意力机制(Graph Attention)对
所有微服务的特征表示赋予不同的权重,计算公式如下:
其中,表示第个微服务的隐藏状态和第个微服务的状态隐藏状态
的相关系数,可以通过神经网络来学习,其中和是需要学习的权重参数,K代表
节点所拥有的邻接节点数量,最后使用归一化得到归一化权重,再对编
码器的隐藏层的状态进行加权求和并通过非线性激活函数sigmoid函数得到每个微服务最
终的编码向量:
图变分自编码器(VGAE)的损失函数与VAE相同,通过计算重建误差与正则化项之
和得到图变分自编码器(VGAE)的损失值;重建误差即计算属性图的邻接矩阵与
图变分自编码器(VGAE)重构得到的邻接矩阵之间的交叉熵;正则化项即用于测量一般正
态分布与标准正态分布差异的KL距离(Kullback–Leibler divergence)。
进一步地,基于图神经网络的异常检测模型中的LSTM自编码器(LSTM-AE)部分包括编码器和解码器,其中编码器部分采用多层的堆叠LSTM神经网络来实现,目的是充分提取微服务特征数据的时序特征,具体如下:
LSTM自编码器(LSTM-AE)的编码器的LSTM单元的状态传递时需要同时考虑到前一个LSTM单元的隐层状态和上一层LSTM单元的隐层状态,即:
其中,代表 LSTM自编码器(LSTM-AE)的输入特征矩阵,按照时间顺序排序,T代
表LSTM自编码器的时间步参数,,为了充分考虑微服务的特征属性存在拓扑
结构上的相关依赖,这里使用VGAE编码器的第一层图注意力卷积层的输出代替原始属性图
的特征矩阵,和分别代表第层,-1时刻的记忆单元状态和隐藏层状态,
表示多层的堆叠LSTM神经网络的层数;
解码器的LSTM的状态更新如下:
其中表示前一时刻的隐藏层状态,表示解码器对于t-1时刻的输出
结果,由构成,表示编码器输出的编码向量;解码器的第一个
时刻使用编码向量来初始化隐藏层的状态和记忆单元的状态,输入为0;通过计算重构
得到的属性图特征矩阵和原始特征矩阵之间的均方差(MSE)得到LSTM自编码器
(LSTM-AE)的损失值。
进一步地,步骤S5中,根据训练好的基于图神经网络异常检测模型对收集并存储到的微服务数据样本进行异常检测,得到每个数据样本的异常概率,并且设定异常概率的阈值为模型历史训练损失的均值与三倍标准差之和,大于阈值则判定为异常数据样本,否则为正常数据样本。
与现有技术相比,本发明具有如下的优点与技术效果:
1. 提供了一种在复杂云环境中不依赖于标签数据,能够处理不平衡数据的基于分布式链路跟踪的微服务异常检测方法。而常规的异常检测方法往往是有监督或半监督的,且难以处理不平衡的数据。
2. 所提出的基于属性图表示的数据形式,融合了分布式链路追踪系统收集微服务本身调用相关信息,包括调用关系和响应时间等,以及收集微服务所处容器的系统运行指标,比如CPU、内存、网络等,能够较为全面的体现云环境下微服务的运行健康状态。
3. 所提出的基于图神经网络的异常检测模型,其采用的基于K-Means++和DBSCAN的预标注技术能够为异常检测提供更合理的输入,降低训练难度;其采用的VGAE和LSTM-AE部分能够从不同角度(空间和时间)对原始数据进行异常检测,融合二者的检测结果使得异常检测模型整体具有高检测精度、适用范围广、鲁棒性强的特点。
附图说明
图1为本发明方法的具体实施例中基于分布式链路跟踪的微服务异常检测方法示意图。
图2 为本发明方法具体实施例中基于收集到的调用链数据生成微服务调用拓扑示意图。
图3为本发明方法具体实施例中基于收集到的调用链数据和微服务所在容器性能指标数据转化成属性图示意图。
图4为本发明方法具体实施例中基于图神经网络异常检测模型示意图。
图5为本发明方法具体实施例中基于Kubernetes部署的微服务系统进行异常检测的流程示意图。
图6为本发明方法具体实施例在TrainTicket上的实验结果。
具体实施方式
为了使本发明的技术方案及优点更加清楚明白,以下结合附图,进行进一步的详细说明,但本发明的实施和保护不限于此。
实施例1:
一种基于调用链的微服务异常检测方法,如图1所示,包括以下步骤:
S1、对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;
所述调用链中所有微服务的响应时间指利用分布式链路追踪系统收集到的span数据中每个微服务对于用户请求的响应时间,每一次用户请求会生成一条调用链,每条调用链由多个span组成,每个span代表微服务之间的一次调用,包含调用方微服务也就是父span,被调用方微服务也就是子span,以及被调用方微服务的响应时间和名称,若存在多个span数据的调用微服务与被调用微服务相同,则该微服务的响应时间为多个相同span数据的平均值;
所述微服务所在容器的性能指标包括微服务运行所在容器的CPU使用率、内存使用率、磁盘使用率和网络使用率。
所述预处理包括缺失值处理、归一化处理和数据格式转换处理;
所述缺失值处理指对于容器的性能指标而言,间隔的缺失值即性能指标的某行或某列的连续缺失值不超过5个,采用最近的12个非缺失值进行线性插值补全修复;
所述数据格式转换处理指根据分布式链路系统收集到的span数据中的父span与子span之间的调用关系,构建服务调用拓扑图,再根据数据的时间戳以及微服务与容器的对应关系构建成属性图,属性图包括一个邻接矩阵A和一个特征矩阵X,其中所述邻接矩阵表示一次用户请求的微服务请求路径,也就是服务调用拓扑图;特征矩阵表示一次用户请求中所有微服务的一系列特征,包括微服务自身的响应时间以及对应span时间戳时刻所处容器的性能指标。
图2为本实施例中根据每条调用链中的span信息构建用户请求的调用拓扑图,具体而言,如图2所示,根据分布式链路系统收集到的调用链表示一次用户请求所调用微服务之间的基本信息,其中每一行代表一个span(包括一次调用的调用方和被调用方以及调用和被调用方的时间戳),构建服务调用拓扑图并计算出每一次调用的响应时间(被调用方返回给调用方的时间戳减去被调用方收到调用方请求的时间戳);图3为本实施例中根据调用链和微服务所在容器的性能指标构建成属性图的过程,具体而言,如图3所示,将服务调用拓扑图转换成邻接矩阵的形式,再将用户请求所调用微服务对应容器的性能指标与分布式链路系统收集到调用微服务的响应时间按照时间戳对齐的方式进行组合,根据此方法将一次用户请求构建成属性图的形式,这种表示方式不仅能够反映出每个服务的服务级指标SLO(service-levelobjective,例如响应时间),还能反映微服务系统实时的健康状态;属性图由一个邻接矩阵和一个特征矩阵构成,其中所述邻接矩阵表示一次用户请求的微服务请求路径,特征矩阵表示所调用微服务的一系列特征,包括一次用户请求中自身的响应时间和所处容器的性能指标。
S2、根据每条调用链中拥有的微服务种类对预处理后的数据进行分类处理;
预处理后的数据样本,依据每个数据样本所包括的微服务种类生成0-1编码,即一次用户请求中访问的微服务标记为1,未访问的微服务标记为0,例如,[0,1,0,1,1]表示此次用户请求访问了微服务系统中的二、四和五号微服务;
利用K-Means++聚类算法对于所有数据样本的0-1编码进行聚类,得到多个聚类簇,基于同一种业务的所有用户请求路径相似的假设,每一个数据样本的类别代表整个微服务系统所提供的一种业务类型;对于每一个数据样本的类别自适应的去除没有访问的微服务节点及其对应特征,以降低计算复杂度,加快模型训练和检测速度。
基于同一种业务的所有用户请求路径相似的假设,每一个类代表整个微服务系统所提供的一种业务类型,包含该业务所有可能访问到的微服务种类;对于所有需要进行异常检测的样本(测试集),计算每个样本与所有聚类簇的欧氏距离,将其归入欧氏距离最小的簇中进行异常检测;
使用K-Means++聚类算法将预处理后的属性图数据进行聚类;K-Means是经典的聚
类算法之一,其核心思想是随机选取第一个聚类中心,在选取第个聚类中心时,距离前个聚类中心越远的点被选中的概率就越高,其中;K-Means++聚类过程中样
本和聚类中心点的距离、样本点被选中为聚类中心的概率的计算分别如公式(1)
和公式(2)所示:
S3、使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;
考虑到训练集中可能存在的噪声,对于每一个聚类簇中的数据样本,进一步的采用基于密度的聚类算法DBSCAN进行降噪处理,具体实施步骤如下:
将属性图中的特征矩阵X展开为一维向量(1,N*F),其中N表示微服务种类数,F表示微服务特征维度;基于同一种服务中所有正常请求的特征都相似的假设,采用基于密度的聚类算法能够提取出每一类服务的正常特征模,即将S2中分好类的训练数据集输入到基于密度的聚类算法中,只选择聚类结果中样本数量最多的一个簇作为异常检测模型训练所需要的数据集,降低异常样本对模型训练的影响。
S4、使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;
如图4所示,基于图神经网络的异常检测模型包括图变分自编码器(VGAE)和基于LSTM自编码器(LSTM-AE)两个部分,图变分自编码器的目的是为了提取数据样本的拓扑特征,并检测是否存在拓扑结构异常,而LSTM自编码器的目的是为了学习数据样本在时间维度上的特征,并检测是否存在微服务相关特征异常;
基于图神经网络的异常检测模型中的图变分自编码器(VGAE)部分包括编码器和解码器,编码器的目的是充分提取拓扑特征,并将拓扑特征映射到隐空间中,而解码器的目的是通过对提取的拓扑特征解码,重构输入数据样本的拓扑结构;
图变分自编码器(VGAE)的输入数据样本为,其中
代表一次用户请求经过数据预处理得到的属性图,按照用户请求的时间顺序排序,,表示输入序列的长度,输入序列是基于请求时间排序;根据
属性图的组成,可以分为 ,其中和分别代表对应的邻接矩阵和
特征矩阵,表示属性图的节点数,即微服务种类数,表示属性图的特征维度;
图变分自编码器(VGAE)是为图结构数据设计的,整体结构基于变分自动编码器
(VAE),图变分自编码器(VGAE)使用两层的图卷积层(GCN)作为编码器部分,将预处理得到
属性图的邻接矩阵和属性矩阵编码到隐藏层中;图变分自编码器(VGAE)的定义如下:
其中,和分别代表第一层GCN和第二层GCN的权重矩阵;X代表输入
的特征矩阵,使用作为第一层GCN输出的激活函数,和是第二层GCN的输出
值,分别代表近似后验的平均值和标准偏差,表示一个取样于正太分布的随机
变量,代表对称归一化的邻接矩阵,归一化公式如下:
其中,代表输入序列中输入数据样本的邻接矩阵,代表邻接矩阵对应
的度矩阵;通过两层的GCN进一步提取节点的拓扑特征,得到更为准确的微服务节点表示,
考虑到不同邻居节点对于节点自身的影响不同,采用图注意力机制(Graph Attention)对
所有微服务的特征表示赋予不同的权重,计算公式如下:
其中,表示第个微服务的隐藏状态和第个微服务的状态隐藏状态
的相关系数,可以通过神经网络来学习,其中和是需要学习的权重参数,K代表节
点所拥有的邻接节点数量,最后使用归一化得到归一化权重,再对编码
器的隐藏层的状态进行加权求和并通过非线性激活函数sigmoid函数得到每个微服务最终
的编码向量:
图变分自编码器(VGAE)的损失函数与VAE相同,通过计算重建误差与正则化项之
和得到图变分自编码器(VGAE)的损失值;重建误差即计算属性图的邻接矩阵
与图变分自编码器(VGAE)重构得到的邻接矩阵之间的交叉熵;正则化项即用于测量一般
正态分布与标准正态分布差异的KL距离(Kullback–Leibler divergence)。
基于图神经网络的异常检测模型中的LSTM自编码器(LSTM-AE)部分包括编码器和解码器,其中编码器部分采用多层的堆叠LSTM神经网络来实现,目的是充分提取微服务特征数据的时序特征,具体如下:
LSTM自编码器(LSTM-AE)的编码器的LSTM单元的状态传递时需要同时考虑到前一个LSTM单元的隐层状态和上一层LSTM单元的隐层状态,即:
其中,代表 LSTM自编码器(LSTM-AE)的输入特征矩阵,按照时间顺序排序,T代
表LSTM自编码器的时间步参数,,为了充分考虑微服务的特征属性存在拓扑
结构上的相关依赖,这里使用VGAE编码器的第一层图注意力卷积层的输出代替原始属性图
的特征矩阵,和分别代表第层,-1时刻的记忆单元状态和隐藏层状态,
表示多层的堆叠LSTM神经网络的层数;
解码器的LSTM的状态更新如下:
其中表示前一时刻的隐藏层状态,表示解码器对于t-1时刻的输出
结果,由构成,表示编码器输出的编码向量;解码器的第一个
时刻使用编码向量来初始化隐藏层的状态和记忆单元的状态,输入为0;通过计算重构
得到的属性图特征矩阵和原始特征矩阵之间的均方差(MSE)得到LSTM自编码器
(LSTM-AE)的损失值。
图5为本实施例中整体流程示意图,具体而言,如图5所示,将目标微服务系统利用Kubernetes部署在多台服务器上,每个容器运行一个微服务实例,通过cadvisor或轮询的方式读取/proc/stat收集微服务所在容器的性能指标,再通过部署分布式链路追踪系统(例如zipkin和jeager)收集微服务的服务级指标,将收集到的数据按步骤S1和S2处理成属性图的形式存储到数据库中(例如Prometheus或Neo4j等),再使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率,并根据结果给出响应的告警信息。
S5、设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本,大于异常概率阈值的被认为是异常数据样本,反之则是正常数据样本,得到异常检测的结果;
根据训练好的基于图神经网络异常检测模型对收集并存储到的微服务数据样本进行异常检测,得到每个数据样本的异常概率,并且设定异常概率的阈值为模型历史训练损失的均值与三倍标准差之和,大于阈值则判定为异常数据样本,否则为正常数据样本。
本实施例中,本发明在开源微服务框架Train Ticket上进行了实验。实验通过将微服务系统Train Ticket部署在拥有5台服务器的集群上,利用locust等工具模拟用户请求生成负载,再根据分布式链路追踪系统收集用户请求的相关信息,例如zipkin和skywalking等,以及微服务间的调用关系构建微服务调用关系图,同时,采集微服务所处容器的性能指标特征进行数据转换。使用K-means++和DBSCAN聚类算法对预处理好的数据样本进行过滤选择,剔除大量存在噪声、无效的数据。选择后的数据样本以邻接矩阵和特征矩阵的形式作为基于图神经网络的异常检测模型输入,用于微服务的异常检测。然后计算异常检测模型中两部分的损失值并进行加权求和得到每个数据样本的异常概率,对比设定的阈值,来表明微服务系统是否存在异常情况。
图6示出了本发明的一个实施例在Train Ticket上的实验结果,其中TraceGra表示本发明。实验结果表明,相比于现有方法,本发明的方法误判率更低,具有更高的诊断准确性,相比于TraceAnomaly将所有不同的span编码成向量的形式,造成调用链编码稀疏,需要巨大的时间开销,本发明通过对每一类属性图进行自适应去除孤立点的处理,能够显著降低模型的训练时间,且以属性图的形式表示调用链能更直观的体现异常的类型,节点属性维度可以根据实际应用场景进行自适应伸缩,具有良好的可扩展性。
实施例2:
相比于实施例1,本实施例在开源微服务系统Sock Shop上进行了实验。
实施例3:
相比于实施例1,本实施例在开源微服务系统TeaStore上进行了实验。
实施例2和实施例3中,与TrainTicket火车订票系统功能不同,主要功能为网络商城购物,一个是售卖袜子,另一个是售卖茶叶。实验利用Locust模拟用户登录注册和在线购物的行为,通过zipkin收集所有用户请求的调用链数据,输入到异常检测模型中,实现了较好的异常检测精度。
Claims (3)
1.一种基于调用链的微服务异常检测方法,其特征在于,包括以下步骤:
S1、对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;所述调用链中所有微服务的响应时间指利用分布式链路追踪系统收集到的span数据中每个微服务对于用户请求的响应时间,若存在多个span数据的调用微服务与被调用微服务相同,则该微服务的响应时间为多个相同span数据的平均值;
所述微服务所在容器的性能指标包括微服务运行所在容器的CPU使用率、内存使用率、磁盘使用率和网络使用率;所述预处理包括缺失值处理、归一化处理和数据格式转换处理;
所述缺失值处理指对于容器的性能指标而言,间隔的缺失值即性能指标的某行或某列的连续缺失值不超过5个,采用最近的12个非缺失值进行线性插值补全修复;
所述归一化处理指对经过缺失值处理后的调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行归一化,让其分布在[0,1];
所述数据格式转换处理指根据分布式链路系统收集到的span数据中的父span与子span之间的调用关系,构建服务调用拓扑图,再根据数据的时间戳以及微服务与容器的对应关系构建成属性图,属性图包括一个邻接矩阵A和一个特征矩阵X,其中所述邻接矩阵表示一次用户请求的微服务请求路径,也就是服务调用拓扑图;特征矩阵表示一次用户请求中所有微服务的一系列特征,包括微服务自身的响应时间以及对应span时间戳时刻所处容器的性能指标;
S2、根据每条调用链中拥有的微服务种类对预处理后的数据进行分类处理;预处理后的数据样本,依据每个数据样本所包括的微服务种类生成0-1编码,即一次用户请求中访问的微服务标记为1,未访问的微服务标记为0,利用K-Means++聚类算法对于所有数据样本的0-1编码进行聚类,得到多个聚类簇,基于同一种业务的所有用户请求路径相似的假设,每一个数据样本的类别代表整个微服务系统所提供的一种业务类型;对于每一个数据样本的类别自适应地去除没有访问的微服务节点及其对应特征,以降低计算复杂度,加快模型训练和检测速度;使用K-Means++聚类算法将预处理后的属性图数据进行聚类;K-Means是经典的聚类算法之一,其核心思想是随机选取第一个聚类中心,在选取第i个聚类中心时,距离前i-1个聚类中心越远的点被选中的概率就越高,其中i>1;K-Means++聚类过程中样本和聚类中心点的距离、样本点P被选中为聚类中心的概率p(x)的计算分别如公式(1)和公式(2)所示:
其中m是数据样本的维度,x代表样本点P,bi是聚类中心B的第i维数据样本;P(x)为样本点P被选中为聚类中心的概率,V为样本集;
S3、使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;
S4、使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;基于图神经网络的异常检测模型包括图变分自编码器和基于LSTM自编码器两个部分,图变分自编码器的目的是为了提取数据样本的拓扑特征,并检测是否存在拓扑结构异常,而LSTM自编码器的目的是为了学习数据样本在时间维度上的特征,并检测是否存在微服务相关特征异常;
通过设置两个超参数α和β将两部分的损失值进行线性加和得到异常检测模型最终的损失值Ltotal,并以此作为异常得分,损失值越大的样本是异常样本的概率越高,计算公式如下:
Ltotal=α*LVGAE+β*LLSTM-AE (3)
其中,α和β两个超参数根据图变分自编码器的损失值LVGAE和基于LSTM自编码器的损失值LLSTM-AE之间的数量级差值来确定,初始设定为α∶β=1∶150;
基于图神经网络的异常检测模型中的图变分自编码器部分包括编码器和解码器,编码器的目的是充分提取拓扑特征,并将拓扑特征映射到隐空间中,而解码器的目的是通过对提取的拓扑特征解码,重构输入数据样本的拓扑结构;
图变分自编码器的输入数据样本为Tset={t1,t2,...,tn}|,其中ti代表一次用户请求经过数据预处理得到的属性图,按照用户请求的时间顺序排序,i=1~n,n表示输入序列Tset的长度,输入序列Tset是基于请求时间排序;根据属性图的组成,Tset可以分为和
其中ai和xi分别代表对应ti的邻接矩阵和特征矩阵,m表示属性图的节点数,即微服务种类数,f表示属性图的特征维度;
图变分自编码器是为图结构数据设计的,整体结构基于变分自动编码器,图变分自编码器使用两层的图卷积层作为编码器部分,将预处理得到属性图的邻接矩阵和属性矩阵编码到隐藏层Z1中;图变分自编码器的定义如下:
Z1=μ+ε*σ (6)
其中,W1和W2分别代表第一层GCNh1和第二层GCNh2的权重矩阵;X代表输入的特征矩阵,使用ReLU作为第一层GCNh1输出的激活函数,μ和σ是第二层GCNh2的输出值,分别代表近似后验的平均值和标准偏差,ε表示一个取样于正态分布N(0,1)的随机变量,代表对称归一化的邻接矩阵,归一化公式如下:
其中,A代表输入序列Tset中输入数据样本的邻接矩阵,D代表邻接矩阵对应的度矩阵;通过两层的GCN进一步提取节点的拓扑特征,得到更为准确的微服务节点表示,考虑到不同邻居节点对于节点自身的影响不同,采用图注意力机制对所有微服务的特征表示赋予不同的权重,计算公式如下:
其中,ejn表示第j个微服务的隐藏状态vj和第n个微服务的隐藏状态vn的相关系数,可以通过神经网络来学习ejn,其中W和是需要学习的权重参数,K代表节点所拥有的邻接节点数量,最后使用Softmax归一化得到归一化权重ajn,再对编码器的隐藏层的状态进行加权求和并通过非线性激活函数sigmoid函数得到每个微服务最终的编码向量gj:
图变分自编码器的损失函数与VAE相同,通过计算重建误差与正则化项之和得到图变分自编码器的损失值LVGAE;重建误差即计算属性图的邻接矩阵A与图变分自编码器重构得到的邻接矩阵之间的交叉熵;正则化项即用于测量一般正态分布与标准正态分布差异的KL距离;
基于图神经网络的异常检测模型中的LSTM自编码器部分包括编码器和解码器,其中编码器部分采用多层的堆叠LSTM神经网络来实现,目的是充分提取微服务特征数据的时序特征,具体如下:
LSTM自编码器的编码器的LSTM单元的状态传递时需要同时考虑到前一个LSTM单元的隐层状态和上一层LSTM单元的隐层状态,即:
其中,Xt代表LSTM自编码器(LSTM-AE)的输入特征矩阵,按照时间顺序排序,T代表LSTM自编码器的时间步参数,t=1~T,为了充分考虑微服务的特征属性存在拓扑结构上的相关依赖,这里使用VGAE编码器的第一层图注意力卷积层的输出代替原始属性图的特征矩阵,和分别代表第k层,t-1时刻的记忆单元状态和隐藏层状态,L表示多层的堆叠LSTM神经网络的层数;
解码器的LSTM的状态更新如下:
其中St-1表示前一时刻的隐藏层状态,Y′t-1表示解码器对于t-1时刻的输出结果,St-1由(ht-1,ct-1)构成,Z2表示编码器输出的编码向量;解码器的第一个时刻使用编码向量Z2来初始化隐藏层的状态和记忆单元的状态,输入为0;通过计算重构得到的属性图特征矩阵和原始特征矩阵Xt之间的均方差得到LSTM自编码器的损失值LLSTM-AE;
S5、设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本,大于异常概率阈值的被认为是异常数据样本,反之则是正常数据样本,得到异常检测的结果。
2.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S3中,考虑到训练集中可能存在的噪声,对于每一个聚类簇中的数据样本,进一步的采用基于密度的聚类算法DBSCAN进行降噪处理,具体实施步骤如下:
将属性图中的特征矩阵X展开为一维向量(1,N*F),其中N表示微服务种类数,F表示微服务特征维度;基于同一种服务中所有正常请求的特征都相似的假设,采用基于密度的聚类算法提取出每一类服务的正常特征模,即将S2中分好类的训练数据集输入到基于密度的聚类算法中,只选择聚类结果中样本数量最多的一个簇作为异常检测模型训练所需要的数据集,降低异常样本对模型训练的影响。
3.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S5中,根据训练好的基于图神经网络异常检测模型对收集并存储到的微服务数据样本进行异常检测,得到每个数据样本的异常概率,并且设定异常概率的阈值为模型历史训练损失的均值与三倍标准差之和,大于阈值则判定为异常数据样本,否则为正常数据样本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211165473.8A CN115269357B (zh) | 2022-09-23 | 2022-09-23 | 一种基于调用链的微服务异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211165473.8A CN115269357B (zh) | 2022-09-23 | 2022-09-23 | 一种基于调用链的微服务异常检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115269357A CN115269357A (zh) | 2022-11-01 |
CN115269357B true CN115269357B (zh) | 2023-02-14 |
Family
ID=83756738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211165473.8A Active CN115269357B (zh) | 2022-09-23 | 2022-09-23 | 一种基于调用链的微服务异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269357B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795342B (zh) * | 2022-11-15 | 2024-02-06 | 支付宝(杭州)信息技术有限公司 | 一种业务场景分类的方法、装置、存储介质及电子设备 |
CN116366310B (zh) * | 2023-02-28 | 2023-11-21 | 深圳市众志天成科技有限公司 | 一种基于信息安全的云服务方法及装置 |
CN116170514B (zh) * | 2023-04-21 | 2023-07-18 | 华能信息技术有限公司 | 一种用于中台业务的服务策略调用实现方法及系统 |
CN116881571B (zh) * | 2023-07-27 | 2024-01-12 | 广东麦视互联网科技有限公司 | 基于微服务的数据挖掘方法及系统 |
CN116680141B (zh) * | 2023-07-31 | 2023-12-01 | 北京趋动智能科技有限公司 | 异常预测方法、装置、存储介质及电子设备 |
CN116679890B (zh) * | 2023-08-02 | 2023-09-29 | 湖南惟储信息技术有限公司 | 存储设备安全管理系统及其方法 |
CN117370064B (zh) * | 2023-10-31 | 2024-05-28 | 河北东软软件有限公司 | 一种基于容器技术的微服务系统 |
CN117591970B (zh) * | 2024-01-18 | 2024-04-05 | 昆山曼赫电子科技有限公司 | 一种全自动组装设备的故障预警方法及系统 |
CN117972319B (zh) * | 2024-04-02 | 2024-07-05 | 浙江大学 | 一种基于动态图自监督学习的调用链异常检测方法和装置 |
CN118443226A (zh) * | 2024-05-28 | 2024-08-06 | 沃弗(南京)环境工程有限公司 | 基于ai的通风管道定点定量漏风监测与报警系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111914873A (zh) * | 2020-06-05 | 2020-11-10 | 华南理工大学 | 一种两阶段云服务器无监督异常预测方法 |
CN113014421A (zh) * | 2021-02-08 | 2021-06-22 | 武汉大学 | 一种面向云原生系统的微服务根因定位方法 |
CN113392893A (zh) * | 2021-06-08 | 2021-09-14 | 北京达佳互联信息技术有限公司 | 业务故障的定位方法、装置、存储介质及计算机程序产品 |
CN113449660A (zh) * | 2021-07-05 | 2021-09-28 | 西安交通大学 | 基于自注意增强的时空变分自编码网络的异常事件检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11368372B2 (en) * | 2016-06-03 | 2022-06-21 | Nutanix, Inc. | Detection of outlier nodes in a cluster |
WO2022167840A1 (en) * | 2021-02-04 | 2022-08-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Profiling workloads using graph based neural networks in a cloud native environment |
CN113961759B (zh) * | 2021-10-22 | 2024-05-07 | 北京工业大学 | 基于属性图表示学习的异常检测方法 |
CN114610613A (zh) * | 2022-03-08 | 2022-06-10 | 国家电网有限公司信息通信分公司 | 一种面向在线实时的微服务调用链异常检测方法 |
-
2022
- 2022-09-23 CN CN202211165473.8A patent/CN115269357B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111914873A (zh) * | 2020-06-05 | 2020-11-10 | 华南理工大学 | 一种两阶段云服务器无监督异常预测方法 |
CN113014421A (zh) * | 2021-02-08 | 2021-06-22 | 武汉大学 | 一种面向云原生系统的微服务根因定位方法 |
CN113392893A (zh) * | 2021-06-08 | 2021-09-14 | 北京达佳互联信息技术有限公司 | 业务故障的定位方法、装置、存储介质及计算机程序产品 |
CN113449660A (zh) * | 2021-07-05 | 2021-09-28 | 西安交通大学 | 基于自注意增强的时空变分自编码网络的异常事件检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115269357A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115269357B (zh) | 一种基于调用链的微服务异常检测方法 | |
US10373056B1 (en) | Unsupervised model building for clustering and anomaly detection | |
CN111314331B (zh) | 一种基于条件变分自编码器的未知网络攻击检测方法 | |
CN106529721B (zh) | 一种深度特征提取的广告点击率预测系统及其预测方法 | |
CN114297036A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN113032525A (zh) | 虚假新闻检测方法、装置、电子设备以及存储介质 | |
CN110289987B (zh) | 基于表征学习的多智能体系统网络抗攻击能力评估方法 | |
CN113516174B (zh) | 调用链异常检测方法、计算机设备以及可读存储介质 | |
CN110851654A (zh) | 基于张量化数据降维的工业设备故障检测分类方法 | |
CN115801463B (zh) | 工业互联网平台入侵检测的方法、装置和电子设备 | |
CN113314188B (zh) | 图结构增强的小样本学习方法、系统、设备及存储介质 | |
CN117034143B (zh) | 一种基于机器学习的分布式系统故障诊断方法及装置 | |
CN114048468A (zh) | 入侵检测的方法、入侵检测模型训练的方法、装置及介质 | |
CN114139589A (zh) | 故障诊断方法、装置、设备与计算机可读存储介质 | |
Zhang et al. | Robust KPI anomaly detection for large-scale software services with partial labels | |
CN115905959A (zh) | 基于缺陷因子的电力断路器关联性故障分析方法及装置 | |
CN116894096A (zh) | 一种基于递归双超图神经网络的新闻事件预测方法 | |
CN117035697B (zh) | 基于历史动态分析的itsm平台优化方法及系统 | |
CN117194742A (zh) | 一种工业软件组件推荐方法及系统 | |
CN114049966B (zh) | 一种基于链接预测的食源性疾病暴发识别方法和系统 | |
CN113159976B (zh) | 一种微博网络重要用户的识别方法 | |
CN115510948A (zh) | 一种基于鲁棒图分类的区块链钓鱼检测方法 | |
CN114757495A (zh) | 一种基于逻辑回归的会员价值量化评估方法 | |
Munikoti et al. | Bayesian graph neural network for fast identification of critical nodes in uncertain complex networks | |
Wojtkiewicz et al. | Advances in Computational Collective Intelligence: 13th International Conference, ICCCI 2021, Kallithea, Rhodes, Greece, September 29–October 1, 2021, Proceedings |
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 |