一种基于分布式追踪数据的微服务系统异常检测方法及系统

文档序号:38760318发布日期:2024-07-24 23:04阅读:15来源:国知局
一种基于分布式追踪数据的微服务系统异常检测方法及系统

本发明涉及云计算环境下微服务系统的运维管理技术,具体涉及一种基于分布式追踪数据的微服务系统异常检测方法及系统。


背景技术:

1、随着云计算技术的迅猛发展,越来越多的企业将其应用程序迁移到云原生平台上,采取微服务架构将大型应用程序拆分成一组可以独立部署的微服务,进而提高整个应用程序的可扩展性和可维护性。在这类微服务系统中,每个微服务专注于实现特定的业务功能,可以独立开发、部署和扩展。不同微服务之间可以通过轻量级通信机制进行交互,协同实现复杂的业务功能并响应外部请求。

2、云原生应用的业务功能日趋复杂,导致微服务系统的规模不断扩大,可以包括几十个到数万个微服务。庞大的规模以及微服务之间错综复杂的依赖关系为微服务系统的故障诊断带来了严峻挑战。某个微服务发生故障,其异常状况可能会沿着微服务之间的依赖关系迅速传播,造成大量微服务的异常。为了保护经济利益和保障用户体验,通过故障诊断协助系统快速恢复至正常状态至关重要。故障诊断的首要任务是检测系统的异常。基于trace(用户请求)的异常检测方法常见于大型微服务系统,可以在更细的粒度上实现异常检测。

3、当外部用户请求进入微服务系统中,会引发一系列微服务之间的调用,来协同实现对用户请求的响应。为了追踪并监控用户请求的执行路径,开发人员通常在微服务系统中应用分布式追踪技术,生成追踪数据来记录用户请求的成员调用事件以及事件之间的关联。每条追踪数据记录一个调用事件,由调用事件本身的监控信息和用户请求相关信息组成。调用事件的监控信息包括调用类型、调用方和被调用方、开始时间戳、响应时间(response time,rt)、响应状态等信息。用户请求相关信息指用于辅助构建用户请求执行路径的信息,包括用户请求标识(trace id)、调用事件标识(span id)和父调用事件标识(pid)等。实现分布式追踪的关键是为每个用户请求分配全局唯一的trace id,为每个调用事件分配局部唯一的span id,保证拥有相同trace id标识的所有调用事件的span id不会重复,即二元组(trace id,span id)可以唯一标识一个调用事件。每个调用事件的pid指向其父调用事件的span id。基于trace id可以从追踪数据中提取各个用户请求,再基于spanid和pid可以还原用户请求的执行路径。每个用户请求可以抽象为以调用事件为节点的树结构,称为该用户请求的追踪树。对调用关系的详细记录使得用户请求在微服务系统的故障诊断中扮演着不可或缺的角色。

4、目前已有一些基于用户请求的异常检测方法,通过对用户请求的成员调用事件执行响应时间rt异常检测来判断微服务系统是否异常,但是这类方法通常忽视后代调用,可能导致检测的准确性不高。具体来讲,调用事件的响应时间rt是指调用方发起调用至收到响应的延迟,父调用的响应时间rt包含子调用的响应时间rt,即响应时间rt具有“代代传承”的特性。因此,调用事件的后代调用是影响其响应时间rt的关键因素,但是现有相关方法忽略追踪子树特征,仅关注调用事件本身的调用方、被调用方和调用类型等信息,限制其检测异常的准确性。

5、因此,如何基于用户请求提取并表示调用事件的后代调用特征来提升响应时间rt异常检测的准确性,已成为实现微服务系统故障诊断的一个关键技术问题。


技术实现思路

1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于分布式追踪数据的微服务系统异常检测方法及系统,本发明旨在实现一种简单高效、具有更高的准确性的响应时间rt时间序列异常检测技术,以有效支撑微服务系统的故障诊断。

2、为了解决上述技术问题,本发明采用的技术方案为:

3、一种基于分布式追踪数据的微服务系统异常检测方法,包括:

4、根据标识trace id将分布式追踪数据基于用户请求分组;

5、分别为各个用户请求基于追踪数据构造追踪树;

6、根据微服务系统的系统规模选择调用事件的特征集合;

7、提取追踪树中每个调用事件的追踪子树的特征向量;

8、以每个调用事件的追踪子树的特征向量为依据将调用事件进行分类,使得追踪子树的特征向量相同或相似的调用事件作为同一类调用事件;

9、针对每类调用事件,利用该类调用事件对应的、预先训练好的响应时间异常检测模型检测该类调用事件是否响应时间异常;

10、对用户请求进行异常判断:若用户请求的任意一个调用事件的响应时间异常,则判定该用户请求响应时间异常。

11、可选地,所述分布式追踪数据的字段包括标识trace id、调用事件标识span id、父调用事件标识pid、调用方source、被调用方target、调用类型calltype、开始时间戳starttime、响应时间rt和成功状态success。

12、可选地,所述分别为各个用户请求根据追踪数据构造追踪树时,为某一个用户请求根据追踪数据构造追踪树包括:①为追踪树添加节点:将该用户请求的每条追踪数据记录的调用事件作为追踪树中的一个节点;②添加追踪树的边:针对该用户请求的每条追踪数据,添加一条从该追踪数据记录的pid对应的父调用事件节点指向该记录中调用事件标识span id对应的调用事件节点的边。

13、可选地,所述根据微服务系统的系统规模选择调用事件的特征集合包括:若微服务系统中的微服务数量小于等于设定值,则选择调用方source、被调用方target、调用类型calltype作为调用事件的特征集合;否则仅选择调用类型calltype作为调用事件的特征集合。

14、可选地,所述提取追踪树中每个调用事件的追踪子树的特征向量包括:将追踪树中每个调用事件的追踪子树视为一个k叉树,采用k叉树的括号表示法生成调用事件的追踪子树的表示文本,所述表示文本中采用括号的包含关系来定义k叉树的层次,使得根节点位于最外侧的括号中、层次最深的叶子节点位于最内侧的括号中,同一层次的节点位于同一级括号内且采用逗号分隔,父节点的所有子节点形成的表示文本位于该父节点的节点名称后;根据选择的调用事件的特征集合,生成每个调用事件的追踪子树中任意节点p的m维度的特征向量并分别基于拓扑信息和这些节点的第1~m个维度的特征构造调用事件的追踪子树的第1~m个维度的特征,从而得到调用事件的追踪子树的维度为m的特征向量。

15、可选地,所述利用该类调用事件对应的、预先训练好的响应时间异常检测模型检测该类调用事件是否响应时间异常之前,还包括为每一类调用事件训练一个响应时间异常检测模型,且针对某一类调用事件训练一个响应时间异常检测模型包括:①数据预处理:从该类调用事件的历史分布式追踪数据中提取响应时间rt,并将响应时间rt按照开始时间戳starttime排序以作为响应时间序列数据并进行预处理;②训练时序预测的arima模型:将预处理后的响应时间序列数据拆分成训练集和测试集,利用训练集训练arima模型以实现对响应时间时序的预测;使用训练好的arima模型预测测试集的响应时间时序,得到预测值和置信区间,计算测试集的实际值与预测值之间的残差,获取残差数据集yt,标注其中的正常点和异常点;③训练残差异常检测模型:将残差数据集yt划分为训练集和测试集,训练集中只包含正常样本,不包含异常点,选择孤立森林算法实现对响应时间时序的预测值与实际值之间的残差的异常检测,从训练集中随机选择δ个样本作为孤立树的根节点,通过递归式随机切割训练集来训练孤立森林算法,其中异常检测的异常得分如下:

16、

17、上式中,s(yt,δ)表示异常得分,h(yt)为样本yt的路径长度,e(h(yt))为h(yt)的期望值,c(δ)为给定样本数量δ时路径长度的平均值;若异常得分s(yt,δ)大于预设阈值则对应的样本响应时间异常,否则响应时间正常。

18、此外,本发明还提供一种基于分布式追踪数据的微服务系统异常检测系统,包括微服务子系统、分布式追踪子系统和异常检测子系统,所述微服务子系统包括多个相互存在调用关系的微服务,所述分布式追踪子系统用于对各个微服务进行追踪以获取分布式追踪数据,所述异常检测子系统用于被编程或配置以执行所述基于分布式追踪数据的微服务系统异常检测方法。

19、此外,本发明还提供一种基于分布式追踪数据的微服务系统异常检测系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述基于分布式追踪数据的微服务系统异常检测方法。

20、此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序/指令,该算机程序/指令被编程或配置以通过处理器执行所述基于分布式追踪数据的微服务系统异常检测方法。

21、此外,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被编程或配置以通过处理器执行所述基于分布式追踪数据的微服务系统异常检测方法。

22、和现有技术相比,本发明主要具有下述优点:本发明包括以每个调用事件的追踪子树的特征向量为依据将调用事件进行分类,使得相同或相似的追踪子树的特征向量的调用事件作为同一类调用事件,针对每类调用事件,利用该类调用事件对应的、预先训练好的响应时间异常检测模型检测该类调用事件是否响应时间异常;对用户请求进行异常判断:若用户请求的任意一个调用事件的响应时间异常,则判定该用户请求响应时间异常,本发明能够高效提取后代调用特征来实现对调用事件的准确分类,以排除后代调用对响应时间rt的干扰,为调用事件的响应时间rt异常检测提供更有价值的数据,从而了实现一种简单高效、具有更高的准确性的响应时间rt时间序列异常检测技术,以有效支撑微服务系统的故障诊断。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1