一种基于容器资源指标的自适应容器异常检测方法

文档序号:34111880发布日期:2023-05-10 22:30阅读:56来源:国知局
一种基于容器资源指标的自适应容器异常检测方法

本发明属于计算机应用,尤其涉及一种基于容器资源指标的自适应容器异常检测方法。


背景技术:

1、容器技术近年来在云计算领域内应用广泛。相比于虚拟机等传统虚拟化方案,容器技术具有轻量化、易扩展的特征,容器平台的异常检测也面临高实时性、高适应性的新要求。在现阶段常用的kubernetes容器平台中,现有的故障检测手段被用于监控容器的生存状态,无法检测存活中容器的行为异常。为此,研究者提出使用容器异常检测方法从海量容器指标中监测容器的异常状态,以便运维人员及早进行响应。

2、现阶段,研究人员在容器异常检测领域已取得一定的成果。这些成果能在一定程度上满足现有容器异常检测的需求,但也存在其局限性,需要提出新的解决方案以实现更多场合下的容器异常检测。

3、部分研究成果采用监控容器外指标的方式检测容器异常。例如,文献“一种容器内进程异常行为检测方法与系统(cn109858244a)”提出了一种在宿主机用户层监控容器内容器进程获取容器行为数据,并使用lstm神经网络检测异常的异常检测方法与系统。文献“一种异常检测方法、装置、可读存储介质以及电子设备(cn115185777a)”提出一种基于安全切面的异常检测方法,该方法通过在业务应用程序中部署安全切面获取容器的资源指标与服务指标,并根据异常匹配策略判断容器是否出现异常。上述方法在特定的容器集群内具有可行性,然而,宿主机层与服务层等容器外指标并不总是能被运维人员获取。考虑到容器的cpu使用率、内存使用量、磁盘i/o数据量和网络i/o数据量等资源指标具有获取难度低、采集工具普及的特点,基于容器资源指标的容器异常检测方法具有较好的适应性。

4、基于容器资源指标的异常检测领域中,研究人员的思路也不尽相同。文献“一种异常检测方法及装置(cn114327963a)”提出了一种基于容器实例历史数据的异常检测方法。该方法提出将同类型容器抽象为容器实例,以容器实例为单位收集历史数据,并基于阈值检测的方法构建在线异常检测器。文献“容器云集群节点异常检测方法及系统(cn114942875a)”提出了一种部署在云集群上的异常检测组件,使用该组件收集云平台中的各类指标与事件,并上报给云服务api。然而,现有研究工作指出,复杂多变的容器环境下,基于阈值检测的方法难以及时根据容器工作状态的变化对阈值进行调整,同时,基于统计、距离与密度等更为复杂的异常检测方法也需关注如何避免海量容器数据引起的过大开销(z.zou,y.xie,k.huang,g.xu,d.feng and d.long,"a docker container anomalymonitoring system based on optimized isolation forest,"in ieee transactionson cloud computing,vol.10,no.1,pp.134-145,1jan.-march 2022,doi:10.1109/tcc.2019.2935724.)。此外,容器数据具有数据产生快、标注难度大的特点,因此基于监督学习的异常检测方法还会面临训练集获取难度大的难题。目前,云平台对基于容器资源指标的无监督、自适应异常检测方法仍有需求。


技术实现思路

1、本发明的目的在于克服上述现有技术的不足,提供一种基于容器资源指标的无监督、自适应容器异常检测方法,以解决现有容器异常检测方法灵活性与实时性不足的缺点。该方法使用容器平台接口获取的容器资源指标数据,通过数据流算法处理数据生成微簇,将微簇中的样本用于训练自动编码器,而后根据自动编码器的异常检测结果实时检测异常样本并定位异常容器,并在方法运行过程中实现异常检测模型的更新。

2、本发明的目的至少通过如下技术方案之一实现。

3、一种基于容器资源指标的容器异常检测方法,包括以下步骤:

4、s1、收集容器集群的资源指标数据并对其预处理,获取常态样本数据集;

5、s2、根据常态样本数据集生成样本微簇,在微簇中储存给定数量的常态样本;

6、s3、以存储的常态样本为数据集,训练自动编码器模型;

7、s4、构建一种基于数据流微簇的自动编码器自动更新机制,使用训练好的自动编码器实时计算容器样本的损失函数,根据损失函数判断样本是否异常,并在检测出异常时定位异常容器,同时根据构建的自动更新机制,实现容器异常实时检测。

8、进一步地,步骤s1中,所述容器集群的资源指标数据包括容器平台提供的接口统计容器的cpu使用率、内存使用量、磁盘i/o数据量和网络i/o数据量;

9、所述接口为docker stats所提供的接口,且可通过自定数据收集接口的方式对指标类型进行扩容;

10、对资源指标数据预处理过程包括差值处理、标准化处理与缺省值处理;

11、所述差值处理、标准化处理与缺省值处理的对象为样本,具体指某一时间戳下所采集的全部数据,包括容器名称、指标类型、容器指标的采集值与采集时间;

12、所述差值处理指,若资源指标为累计值,则在此步骤计算根据历史记录计算差值,获取当前时间间隔的真实资源使用状况;若差值小于等于零,则将指标的实时值设定为最短时间内的非零差值;内存使用量、磁盘i/o数据量和网络i/o数据量等指标均需进行差值处理;

13、所述标准化处理指,根据现有资源指标的均值与方差,将差值处理后的数据进行标准化操作,而后更新该资源指标的均值与方差;

14、所述缺省值处理指,将所采集样本整合为数据块,对已存储数据块中的所有样本,将差值非零的指标记做有效指标并保留现有差值,将差值为零的指标用线性填充的方法赋值;缺省值处理在每当有非零差值产生时执行一次,数据块末尾的样本仍使用最近时间戳的有效差值填充;内存使用量、磁盘i/o数据量和网络i/o数据量等三类指标适用缺省值处理;使用缺省值处理可缓解部分指标采样时间过长引发的数据缺失,但该步骤会降低异常检测的实时性;缺省值处理通常在指标收集间隔无法同步时开启,并应用于采样间隔较长的资源指标;

15、容器集群在资源指标收集过程中需保持正常状态;

16、集群中所有容器需处于运行中状态,容器所承载业务需保持可正常访问的状态;容器资源指标或业务指标的短暂波动不对指标收集过程产生影响。

17、进一步地,步骤s2中,构建一种存储多个数据样本的数据流微簇,包括构建微簇的核心参数、微簇内重要指标的计算方式与微簇的类型划分,具体如下:

18、微簇的构建需要ε、λ、β三个参数,其中ε为微簇半径阈值参数,λ为衰退参数,β为离群微簇阈值参数;

19、微簇内包含w、c、r三个指标,w、c与r分别表示微簇的权重、中心点与半径,可通过微簇的历史信息与样本点进行计算;微簇的权重w决定了微簇可存储的样本点数目;

20、根据微簇的权重w不同,微簇分为核心微簇与离群微簇,两种微簇可互相转化;每经过一个微簇生存周期,移除权重不足的离群微簇;

21、在一个有n个样本点的微簇中,用pi表示微簇中的第i个样本点,ti表示第i个样本点的时间戳,t表示当前时间,在定义了ε、λ、β后,可用下列公式计算微簇的属性:

22、衰退参数λ表示方法对历史数据的重视程度,其值越大表明历史数据的权重衰退程度越大;λ取值范围为0<λ<1,记历史时间与当前时间的时间差为t,衰退因子f(t)的计算公式如公式(1)所示:

23、f(t)=2-λt; (1)

24、微簇的权重w决定微簇的类型与生命周期,并限制了微簇内存储的样本点总数;w通过样本的时间戳计算得出,计算公式如公式(2)所示:

25、

26、微簇中心点c与半径r通过权重w与微簇内所有样本点坐标计算得出;在衰退因子f(t)作用下,样本进入微簇的时间越长,其对特征的影响程度越小;两个参数计算公式如公式(3)(4)所示:

27、

28、

29、其中,d(a,b)表示a与b两点的欧几里得距离,具体指a与b在多维空间中的绝对距离,计算公式如公式(5)所示:

30、

31、其中,n表示空间维度,a与b是n维空间上的点,xi与yi表示a与b在第i个维度上的坐标。

32、进一步地,相比核心微簇,离群微簇具有较低的权重与样本接收优先级,并存在被移除的可能;核心微簇和离群微簇的划分细节如下:

33、μ为微簇权重的最大值,被用于计算核心微簇和离群微簇的划分阈值;具体地,在集群每次流入1个样本的条件下,当前时间t→∞时,根据公式(1)和公式(2),数据流中所有微簇的权重之和μ为恒定值,计算公式如公式(6)所示:

34、

35、为区分微簇权重的不同,定义离群微簇阈值参数β并规定0<β<1,将βμ作为核心微簇与离群微簇的区分阈值;定义tp为核心微簇转化为离群微簇所需的最短时间,则tp的计算公式如公式(7)所示:

36、

37、对离群微簇而言,tp则是离群微簇的最短生命周期。

38、进一步地,步骤s2中,执行微簇的初始化;

39、所述初始化过程使用常态样本数据集获取初始微簇,所述初始微簇由常态样本数据集多次迭代产生,具体如下:

40、将样本中的第一个样本点视为权重w为1、中心点c为该样本、半径r为0的初始微簇,并尝试将数据集中样本依次放入该微簇中,通过微簇对样本的接收过程生成第一批微簇;多次使用第一批微簇重复接收数据集中的样本,将迭代后产生的微簇作为用于后续模型训练的初始微簇。

41、进一步地,步骤s3中,自动编码器(ae)模型分为编码器与解码器两部分,具体如下:

42、自动编码器的定义如下:

43、h=σe(w1x+b1) (8)

44、y=σd(w2x+b2) (9)

45、

46、其中,x表示编码器的输入,h表示隐藏层的输出,y表示解码器的输出,σe与σd分别表示编码器与解码器的激励函数,w1与w2分别表示编码器与解码器的权重,b1与b2分别表示编码器与解码器的偏置,j(w,b)为自动编码器的损失函数;

47、编码器与解码器的结构如下:

48、编码器的输入样本为步骤s1中预处理后的样本点;n个容器组成的集群中,每个容器均存在cpu使用率、内存使用量、磁盘i/o数据量和网络i/o数据量四种资源指标,因此样本点的维度为4n;编码器包括4个隐藏层,每个隐藏层为一个输入维度为m、输出维度为n的全连接层,其中m>n;每个隐藏层后均使用relu函数作为激活函数;编码器的输入维度与容器集群规模相关,因此编码器的结构应根据容器数量n进行调整;

49、解码器的结构与编码器相对称;编码器中,任取一个输入维度为m、输出维度为n的全连接层,解码器中有且只有一个输入维度为n、输出维度为m的全连接层与之相对应,反之亦然;同样地,解码器中的每个隐藏层后均使用relu函数作为激活函数。

50、进一步地,步骤s4中,构建一种基于数据流微簇的自动编码器自动更新机制,实现容器异常实时检测,具体如下:

51、s4.1、容器实时样本输入训练好的自动编码器,通过自动编码器计算样本损失函数,并根据损失函数检测异常样本,进行容器异常实时检测;

52、s4.2、训练好的自动编码器执行样本异常检测后,新的正常样本被微簇接收,而后更新全部微簇的属性与样本队列,并移除样本队列中的过时样本;

53、s4.3、经过一个微簇生存周期后,检查所有微簇的权重,移除权重低于设定阈值的离群微簇;

54、s4.4、经过一个模型训练周期后,使用微簇中保存的正常样本训练新的自动编码器模型,以解决容器资源指标数据流的概念漂移问题,模型的训练可在一个至数个时间戳内完成,训练完成后返回步骤s4.1。

55、进一步地,步骤s4.1中,损失函数j(w,b)为均方损失函数(mean square error,mse),该损失函数计算了输入x与输出y的差异程度;

56、自动编码器模型期望输出与输入尽可能相同;

57、在异常检测问题中,使用容器集群正常运行的数据进行训练后,正常样本的mse相对较低,异常样本则难以通过解码器重构出输入样本,因此mse明显高于正常样本;

58、获取mse后,根据集群特征,选用以下三种方法中的一种作为异常检测方法:

59、3σ准则法,即将异常阈值设为模型历史训练损失的均值与三倍标准差之和,大于阈值则判定样本异常,否则样本正常;该方式具有较好的适应性与便捷性,为所述方案的默认异常检测方法;

60、手动指定法,即运维人员手动指定异常阈值。该方式可满足对异常检测灵敏度与准确度的进一步需求;

61、lof法,即通过局部离群因子(local outlier factor,lof)算法进一步检测mse的异常点;该方式适用于以上两种方式均效果不佳的场合;

62、若样本点异常,则使用mse定位对样本异常贡献最多的数个容器,将其识别为异常根因;

63、具体地,选择距离样本最近的微簇中心作为正常参考样本,并使用待测样本的部分容器指标不断替换参考样本中对应容器的资源指标,通过对比不同替换方案的mse确定异常容器所在位置;

64、该过程使用二分法搜索最可能导致异常的容器,并在记录异常容器后将待测样本的指标替换为正常参考样本;

65、而后,重复异常容器检测过程,从而定位其他导致异常的容器。

66、进一步地,步骤s4.2中,新样本点在通过异常检测后,根据优先级的顺序依次由样本空间中欧氏距离最近的核心微簇与欧氏距离最近的离群微簇尝试接收,两种微簇均无法接收的场合,则以该样本为中心,创建新的离群微簇;

67、样本点进入微簇需经历以下过程:由目标微簇mc尝试接收样本p,用p的坐标与mc的原始指标生成新微簇mc′;若mc′的半径rmc′满足rmc′<ε,则说明样本p可被mc接收;确认样本p可被mc接收后,将mc从微簇列表中删除,并将mc′添加至目标微簇;样本被微簇接收后进入正常样本队列,从而参与步骤s4.4中的自动编码器模型的初始化与更新;

68、最近时间戳的样本点得到处理后,无论是否有新的样本点并入,每个微簇需更新各自的属性;每个容器内部均维护一个容纳最新样本的正常样本队列,该队列的长度为w,w向下取整,并在微簇特征更新后舍弃掉超过队列长度的最早样本。

69、进一步地,步骤s4.3中,每间隔tp时间,执行一次微簇的权重检查;

70、对于任意微簇而言,若权重w≥βμ,则该微簇为核心微簇;若权重w<βμ,则该微簇为离群微簇;

71、计算权重后,离群微簇将保留至下一次权重检测,若其权重满足w≥βμ,则该离群微簇转化为核心微簇,否则该微簇将被移除;

72、对所有微簇的权重进行检查后,核心微簇与离群微簇列表完成更新。

73、与现有技术相比,本发明具有以下技术成果与优点:

74、1.提出了一种基于容器资源指标的异常检测方法,该方法使用数据流微簇提取cpu、内存、磁盘、网络等容器资源指标信息,并使用自动编码器进行异常检测与定位,具有良好的异常检测准确度、运行速度与泛化能力。

75、2.所提出容器异常检测方法具有无监督、自适应的优点,其模型仅需少量正常样本即可训练,可以处理大量容器资源指标并迅速完成异常检测模型的更新,很好地适应了容器环境轻量化的特点。作为对比,常规异常检测方法多为监督与半监督模式,所训练异常检测模型需在新的容器集群中收集、标注训练数据,且无法进行模型的实时更新。

76、3.所提出容器异常检测模型,其采用的可迭代的微簇可以储存自动更新流数据正常样本,提高异常检测训练集的正样本纯度与实时性;其采用的ae可以较好地利用该异常检测训练集,在短时间内完成模型训练并进行样本的实时异常检测。两种方法的结合可以高效、高精度地执行容器资源指标异常检测工作。

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