一种基于调用链的微服务异常检测方法技术

技术编号:35429320 阅读:47 留言:0更新日期:2022-11-03 11:33
本发明专利技术公开了一种基于调用链的微服务异常检测方法。所述方法包括以下步骤:对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;对预处理后的数据进行分类处理;使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本得到异常检测的结果。本发明专利技术能够同时发现服务质量异常和资源使用异常,且具有不依赖于标签数据、扩展性强、性能优的优点。优的优点。优的优点。

【技术实现步骤摘要】
一种基于调用链的微服务异常检测方法


[0001]本专利技术属于计算机应用
,尤其涉及一种基于调用链的微服务异常检测方法。

技术介绍

[0002]微服务架构除了拥有动态扩展和独立部署的特点之外,还支持使用不同种类的编程语言,这使得微服务架构成为越来越多的电子商务网站部署其应用的最佳解决方案。例如京东在50万个容器的集群上提供了超过8000个应用和约34000个微服务,每天支持超过2500亿次基于RPC的微服务调用。对于用户来说,希望应用的响应时间越短越好,如果微服务系统出现错误,会给企业带来不可预知的经济损失。研究指出(O. Ibidunmoye, F. Hern
´
andez

Rodriguez, and E. Elmroth,
ꢀ“
Performance anomaly detection and bottleneck identification,
”ꢀ
ACM Computing Surveys(CSUR), vol. 48, no. 1, pp. 1

35, 2015.),当用户请求的响应时间增加100ms时,电商网站的营业额就会下降1%,因此研究如何确保微服务系统的高可用性是十分重要的。
[0003]随着云计算的快速发展,微服务系统变得越来越庞大,微服务之间的依赖关系也变得错综复杂,业务需求更新迭代快使得传统静态的异常检测方法无法适用,迫切需要一种灵敏且适用范围广的微服务异常检测方法,来快速发现系统中存在的故障或潜在异常,保障微服务系统的可靠性和性能。
[0004]针对微服务异常检测的工作,目前研究学者已经提出了众多方法,中国专利文献CN113467421A“获取微服务健康状态指标的方法和微服务异常诊断方法”提出利用微服务所处物理机的硬件状态数据以及微服务的健康状态进行异常检测,该方法不适用于微服务部署在当下流行的虚拟化容器上的云环境场景,云环境复杂且变化多样,难以从物理机层面对微服务进行异常预测。中国专利文献CN109933452B“一种面向异常传播的微服务智能监测方法”提出通过使用代理的方式对微服务的调用进行监控,使用Lasso回归对所检测的度量值进行预测,大于设定阈值的则判定为异常,但该方法没有考虑到微服务所处环境带来的可能影响,无法发现微服务系统中潜在的性能影响因素。因此,如何构造适合分布式部署环境下微服务异常检测的方法仍旧是云计算智能运维的一项挑战。

技术实现思路

[0005]本专利技术的目的在于克服上述现有技术的不足,提供一种基于调用链的微服务异常检测方法,用属性图的形式融合微服务本身以及微服务所处环境的特征,通过图神经网络等模型对微服务系统状态进行评估,从而实现异常检测,及时降低或避免异常问题带来的损失。
[0006]本专利技术的目的至少通过如下技术方案之一实现。
[0007]一种基于调用链的微服务异常检测方法,包括以下步骤:S1、对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预
处理;S2、根据每条调用链中拥有的微服务种类对预处理后的数据进行分类处理;S3、使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;S4、使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;S5、设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本,大于异常概率阈值的被认为是异常数据样本,反之则是正常数据样本,得到异常检测的结果。
[0008]进一步地,步骤S1中,所述调用链中所有微服务的响应时间指利用分布式链路追踪系统收集到的span数据中每个微服务对于用户请求的响应时间,若存在多个span数据的调用微服务与被调用微服务相同,则该微服务的响应时间为多个相同span数据的平均值;所述微服务所在容器的性能指标包括微服务运行所在容器的CPU使用率、内存使用率、磁盘使用率和网络使用率。
[0009]进一步地,所述预处理包括缺失值处理、归一化处理和数据格式转换处理;所述缺失值处理指对于容器的性能指标而言,间隔的缺失值即性能指标的某行或某列的连续缺失值不超过5个,采用最近的12个非缺失值进行线性插值补全修复;所述数据归一化处理指对经过缺失值处理后的调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行归一化,让其分布在;所述数据格式转换处理指根据分布式链路系统收集到的span数据中的父span与子span之间的调用关系,构建服务调用拓扑图,再根据数据的时间戳以及微服务与容器的对应关系构建成属性图,属性图包括一个邻接矩阵A和一个特征矩阵X,其中所述邻接矩阵表示一次用户请求的微服务请求路径,也就是服务调用拓扑图;特征矩阵表示一次用户请求中所有微服务的一系列特征,包括微服务自身的响应时间以及对应span时间戳时刻所处容器的性能指标。
[0010]进一步地,步骤S2中,预处理后的数据样本,依据每个数据样本所包括的微服务种类生成0

1编码,即一次用户请求中访问的微服务标记为1,未访问的微服务标记为0,利用K

Means++聚类算法对于所有数据样本的0

1编码进行聚类,得到多个聚类簇,基于同一种业务的所有用户请求路径相似的假设,每一个数据样本的类别代表整个微服务系统所提供的一种业务类型;对于每一个数据样本的类别自适应的去除没有访问的微服务节点及其对应特征,以降低计算复杂度,加快模型训练和检测速度。
[0011]进一步地,使用K

Means++聚类算法将预处理后的属性图数据进行聚类;K

Means是经典的聚类算法之一,其核心思想是随机选取第一个聚类中心,在选取第个聚类中心时,距离前个聚类中心越远的点被选中的概率就越高,其中;K

Means++聚类过程中样本和聚类中心点的距离、样本点被选中为聚类中心的概率的计算分别如公式(1)和公式(2)所示:
(1) (2)其中是数据样本的维度,和分别是样本点和聚类中心 的第维数据样本。
[0012]进一步地,步骤S3中,考虑到训练集中可能存在的噪声,对于每一个聚类簇中的数据样本,进一步的采用基于密度的聚类算法DBSCAN进行降噪处理,具体实施步骤如下:将属性图中的特征矩阵X展开为一维向量(1,N*F),其中N表示微服务种类数,F表示微服务特征维度;基于同一种服务中所有正常请求的特征都相似的假设,采用基于密度的聚类算法能够提取出每一类服务的正常特征模,即将S2中分好类的训练数据集输入到基于密度的聚类算法中,只选择聚类结果中样本数量最多的一个簇作为异常检测模型训练所需要的数据集,降低异常样本对模型训练的影响。
[0013]进一步地,步骤S4中,基于图神经网络的异常检测模型包括图变分自编码器(VGAE)和基于LSTM自编码器(LSTM

AE)两个部分,图变分自编码器的目的是为了提取数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于调用链的微服务异常检测方法,其特征在于,包括以下步骤:S1、对调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行预处理;S2、根据每条调用链中拥有的微服务种类对预处理后的数据进行分类处理;S3、使用基于密度的聚类算法对每一类数据进行降噪处理,得到异常检测模型训练所需要的数据集;S4、使用训练好的基于图神经网络的异常检测模型对实时保存的数据样本进行异常检测,得到每一个数据样本的异常概率;S5、设置异常概率阈值,根据数据样本的异常概率判断该数据样本是否为异常数据样本,大于异常概率阈值的被认为是异常数据样本,反之则是正常数据样本,得到异常检测的结果。2.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S1中,所述调用链中所有微服务的响应时间指利用分布式链路追踪系统收集到的span数据中每个微服务对于用户请求的响应时间,若存在多个span数据的调用微服务与被调用微服务相同,则该微服务的响应时间为多个相同span数据的平均值;所述微服务所在容器的性能指标包括微服务运行所在容器的CPU使用率、内存使用率、磁盘使用率和网络使用率。3.根据权利要求2所述的一种基于调用链的微服务异常检测方法,其特征在于,所述预处理包括缺失值处理、归一化处理和数据格式转换处理;所述缺失值处理指对于容器的性能指标而言,间隔的缺失值即性能指标的某行或某列的连续缺失值不超过5个,采用最近的12个非缺失值进行线性插值补全修复;所述数据归一化处理指对经过缺失值处理后的调用链中所有微服务的响应时间及对应微服务所在容器的性能指标进行归一化,让其分布在;所述数据格式转换处理指根据分布式链路系统收集到的span数据中的父span与子span之间的调用关系,构建服务调用拓扑图,再根据数据的时间戳以及微服务与容器的对应关系构建成属性图,属性图包括一个邻接矩阵A和一个特征矩阵X,其中所述邻接矩阵表示一次用户请求的微服务请求路径,也就是服务调用拓扑图;特征矩阵表示一次用户请求中所有微服务的一系列特征,包括微服务自身的响应时间以及对应span时间戳时刻所处容器的性能指标。4.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S2中,预处理后的数据样本,依据每个数据样本所包括的微服务种类生成0

1编码,即一次用户请求中访问的微服务标记为1,未访问的微服务标记为0,利用K

Means++聚类算法对于所有数据样本的0

1编码进行聚类,得到多个聚类簇,基于同一种业务的所有用户请求路径相似的假设,每一个数据样本的类别代表整个微服务系统所提供的一种业务类型;对于每一个数据样本的类别自适应的去除没有访问的微服务节点及其对应特征,以降低计算复杂度,加快模型训练和检测速度。5.根据权利要求4所述的一种基于调用链的微服务异常检测方法,其特征在于,使用K

Means++聚类算法将预处理后的属性图数据进行聚类;K

Means是经典的聚类算法之一,其
核心思想是随机选取第一个聚类中心,在选取第个聚类中心时,距离前个聚类中心越远的点被选中的概率就越高,其中;K

Means++聚类过程中样本和聚类中心点的距离、样本点被选中为聚类中心的概率的计算分别如公式(1)和公式(2)所示:(1)(2)其中 是数据样本的维度,和分别是样本点和聚类中心的第维数据样本。6.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S3中,考虑到训练集中可能存在的噪声,对于每一个聚类簇中的数据样本,进一步的采用基于密度的聚类算法DBSCAN进行降噪处理,具体实施步骤如下:将属性图中的特征矩阵X展开为一维向量(1,N*F),其中N表示微服务种类数,F表示微服务特征维度;基于同一种服务中所有正常请求的特征都相似的假设,采用基于密度的聚类算法提取出每一类服务的正常特征模,即将S2中分好类的训练数据集输入到基于密度的聚类算法中,只选择聚类结果中样本数量最多的一个簇作为异常检测模型训练所需要的数据集,降低异常样本对模型训练的影响。7.根据权利要求1所述的一种基于调用链的微服务异常检测方法,其特征在于,步骤S4中,基于图神经网络的异常检测模型包括图变分自编码器和基于LSTM自编码器两个部分,图变分自编码器的目的是为了提取数据样本的拓扑特征,并检测是否存在拓扑结构异常,而LSTM自编码器的目的是为了学习数据样本在时间维度上的特征,并检测是否存在微服务相关特征异常;通过设置两个超参数 和将两部分的损失值进行...

【专利技术属性】
技术研发人员:刘发贵陈健
申请(专利权)人:华南理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1