CN114327963A - 一种异常检测方法及装置 - Google Patents

一种异常检测方法及装置 Download PDF

Info

Publication number
CN114327963A
CN114327963A CN202011064526.8A CN202011064526A CN114327963A CN 114327963 A CN114327963 A CN 114327963A CN 202011064526 A CN202011064526 A CN 202011064526A CN 114327963 A CN114327963 A CN 114327963A
Authority
CN
China
Prior art keywords
container
container instance
instances
instance
historical data
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.)
Pending
Application number
CN202011064526.8A
Other languages
English (en)
Inventor
周伟洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202011064526.8A priority Critical patent/CN114327963A/zh
Publication of CN114327963A publication Critical patent/CN114327963A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种异常检测方法及装置,涉及计算机技术领域,能够提高容器实例检测的效率。包括:利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关,所述N为大于或等于1的整数;利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。

Description

一种异常检测方法及装置
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种异常检测方法及装置。
背景技术
容器是云计算领域的服务化场景计算机操作系统中的一种虚拟化技术,利用容器为进程提供相对独立和隔离的运行环境,从而能够增强软件的可移植性和安全性,并提高系统资源利用率。容器技术广泛应用于。
现有技术多是针对某个指标进行异常检测,还没有针对容器实例进行异常检测的方案。例如,根据某个应用程序编程接口(application programming Interface,API)在一段时间的数据训练模型,可以利用训练好的模型预测该接口是否出现异常。
在对某个微服务的容器进行升级的过程中,获取到容器的升级软件包后会杀死当前的容器,然后再新建一个容器,在新建的容器运行该微服务相关的进程。容器的这种不稳定性,导致无法针对容器实例进行模型训练、模型预测。例如,根据容器实例A的历史数据训练模型,再利用该模型进行预测时,容器A已经在升级过程中被杀死,训练好的模型无法用于升级该过程中新增容器实例的检测。针对新出现的容器实例(例如,扩容或升级过程中新增的容器实例),需要长时间积累数据训练模型才有可能进行容器的异常检测。总之,容器实例检测的效率较低。
发明内容
本申请实施例提供了一种异常检测方法及装置,能够提高容器实例检测的效率。
第一方面,提供了一种异常检测方法,包括:利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关,所述N为大于或等于1的整数;利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。
本申请中,进行模型训练时把同一个业务(例如,一项微服务)相关的所有容器实例抽象为一个容器实例,即所有容器实例产生的历史数据用于训练一个模型。训练好模型之后,对容器实例进行独立的异常检测,保证每个容器实例的异常情况都会被单独上报,提高了容器实例检测的效率,针对扩容或升级过程中新增的容器实例无需花费时间积累数据,可以快速进行异常检测,针对升级过程中新增的容器实例也不会进入等待数据的死循环,从而避免了由此导致的无法异常检测的问题。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一容器实例为所述N个容器实例中的第二容器实例更新后的容器实例,或者,所述第一容器实例为所述虚拟机新创建的容器实例;或者,所述第一容器实例为所述N个容器实例中的任意一个容器实例。
本申请中,实现模型训练、模型预测的解耦,即使容器实例的历史数据未参与模型训练,只要是同一业务相关的容器实例,都可以利用训练好的模型进行异常检测,包括扩容场景新增的容器实例或容器升级过程中新产生的容器实例,对于这些新增的容器实例,无需长时间积累数据训练模型,提高了容器实例异常检测的效率。
结合第一方面或以上第一方面任意一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:将所述N个容器实例的历史数据标记为目标容器实例的历史数据。
本申请中,在进行模型训练时,还可以将不同容器实例的历史数据标记为同一容器实例的历史数据,可以更好地识别用于训练第一模型的数据,还可以将与同一业务相关的不同容器实例的特征归于同一模型,以便利用训练好的模型对同一业务相关的容器实例进行异常检测。
结合第一方面或以上第一方面任意一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述将所述N个容器实例的历史数据标记为同一个容器实例的历史数据,包括:将所述N个容器实例在第一周期的第一时刻的历史数据标记为所述目标容器实例在N个第二周期的第一时刻的历史数据;所述第一周期的时间长度大于所述第二周期的时间长度。
本申请中,可以利用指标的识别周期将不同容器实例在同一时刻的数据,标记为同一容器实例在不同识别周期内的数据,不会影响数据本身的特性。
结合第一方面或以上第一方面任意一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述利用虚拟机中N个容器实例的历史数据训练第一模型,包括:根据所述N个容器实例的历史数据和所述第一模型的超参数确定所述第一模型的M个特征的异常状态信息;所述异常状态信息用于检测与所述异常状态信息对应的特征是否异常。
本申请,提供了对容器实例进行异常检测的具体实现,包括:确定第一模型的M个特征的异常状态信息,以便判断容器实例的实时数据所表征出的特征是否异常。从而根据特征是否异常判断容器实例是否异常。
结合第一方面或以上第一方面任意一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述利用所述第一模型对第一容器实例进行异常检测,包括:当检测出所述M个特征中任意一个特征出现异常,则确定所述与所述第一业务相关的容器实例异常。
本申请给出了利用模型的特征判断容器实例是否异常的具体实现。
结合第一方面或以上第一方面任意一种可能的实现方式,在第一方面的第四二种可能的实现方式中,所述M个特征的异常状态信息包括以下一项或多项:所述N个容器实例的相关指标的数值阈值、所述相关指标的异常度阈值、所述N个容器实例的接口访问频率阈值;其中,所述相关指标的数值阈值可以是所述相关指标的数值的上限和/或下限,所述相关指标的异常度阈值可以是所述相关指标的数值的变化幅度的上限和/或下限,所述N个容器实例的接口访问频率阈值可以是所述N个容器实例的接口访问频率的上限和/或下限。
本申请给出了M个特征的异常状态信息的具体实现。
第二方面,提供了一种装置,包括:训练单元,用于利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关,所述N为大于或等于1的整数;检测单元,用于利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一容器实例为所述N个容器实例中的第二容器实例更新后的容器实例,或者,所述第一容器实例为所述虚拟机新创建的容器实例;或者,所述第一容器实例为所述N个容器实例中的任意一个容器实例。
结合第二方面或以上第二方面任意一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述训练单元还用于,将所述N个容器实例的历史数据标记为目标容器实例的历史数据。
结合第二方面或以上第二方面任意一种可能的实现方式,在第二方面的第三种可能的实现方式中,将所述N个容器实例在第一周期的第一时刻的历史数据标记为所述目标容器实例在N个第二周期的第一时刻的历史数据;所述第一周期的时间长度大于所述第二周期的时间长度。
结合第二方面或以上第二方面任意一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述训练单元具体用于,根据所述N个容器实例的历史数据和所述第一模型的超参数确定所述第一模型的M个特征的异常状态信息;所述异常状态信息用于检测与所述异常状态信息对应的特征是否异常。
结合第二方面或以上第二方面任意一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述检测单元用于,当检测出所述M个特征中任意一个特征出现异常,则确定所述与所述第一业务相关的容器实例异常。
结合第二方面或以上第二方面任意一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述M个特征的异常状态信息包括以下一项或多项:所述N个容器实例的相关指标的数值阈值、所述相关指标的异常度阈值、所述N个容器实例的接口访问频率阈值;
其中,所述相关指标的数值阈值可以是所述相关指标的数值的上限和/或下限,所述相关指标的异常度阈值可以是所述相关指标的数值的变化幅度的上限和/或下限,所述N个容器实例的接口访问频率阈值可以是所述N个容器实例的接口访问频率的上限和/或下限。
第三方面,提供了一种装置,包括至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合;所述存储器,用于存储计算机程序;
所述至少一个处理器,用于执行所述存储器中存储的计算机程序,以使得所述装置执行如上述第一方面以及第一方面任意一种实现方式所述的方法。
第四方面,提供了一种计算机可读存储介质,包括:计算机可读存储介质中存储有指令;当计算机可读存储介质在上述第二方面以及第二方面任意一种实现方式所述的装置上运行时,使得装置执行如上述第一方面以及第一方面任意一种实现方式所述的通信方法。
第五方面,提供了一种无线装置,该装置包括处理器,例如,应用于装置中,用于实现上述第一方面以及第一方面任意一种实现方式所述的方法,该装置例如可以是芯片系统。在一种可行的实现方式中,所述芯片系统还包括存储器,所述存储器,用于保存实现上述第一方面所述方法的功能必要的程序指令和数据。
上述方面中的芯片系统可以是片上系统(system on chip,SOC),也可以是基带芯片等,其中基带芯片可以包括处理器、信道编码器、数字信号处理器、调制解调器和接口模块等。
附图说明
图1为本申请实施例提供的网络系统的示意图;
图2为本申请实施例提供的容器实例升级示意图;
图3为本申请实施例提供的模型训练原理示意图;
图4为本申请实施例提供的装置的结构框图;
图5为本申请实施例提供的异常检测方法的流程示意图;
图6为本申请实施例提供的模型训练流程图;
图7为本申请实施例提供的数据转化示意图;
图8为本申请实施例提供的模型训练、预测解耦示意图;
图9为本申请实施例提供的容器实例异常检测示意图;
图10为本申请实施例提供的通信方法的另一流程示意图;
图11为本申请实施例提供的装置的另一结构框图。
具体实施方式
图1给出了本申请提供的技术方案所适用的一种网络系统的示意图。参考图1,该系统包括物理机10、运行在物理机10的操作系统之上的一个或多个虚拟机(图中仅示出了虚拟机20、虚拟机30、虚拟机40)以及监控服务器50。
其中,物理机10负责硬件资源的管理、分配,为虚拟机呈现虚拟硬件平台,例如,为虚拟机提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。虚拟机中可以创建容器,利用容器为进程提供相对独立和隔离的运行环境,例如,容器1支持进程1的运行,容器2支持进程2的运行。监控服务器50用于对虚拟机中运行的容器实例进行监控,例如,监控容器实例的接口调用时延,接口调用成功率,失败率,下载速率。
首先,对本申请实施例涉及的术语进行解释说明:
(1)虚拟机:指的是在一台物理计算机上模拟出的一台或者多台虚拟的计算机,这些虚拟机可以像真正的物理计算机那样进行工作。
(2)进程(process):是执行指令的实体,利用进程可以使程序运行起来,以执行各种指令。
(3)实例:包括多个进程,可以是执行一个项目的所有进程的集合。例如,用户需要访问文件1为一个项目,响应用户的访问指令需要执行进程1、进程2以及进程3,进程1、进程2以及进程3的集合可以称为一个实例。
(4)容器:用于为进程提供相对独立和隔离的运行环境,示例的,容器包含独立的文件系统、命名空间、资源视图等。容器实例:进程在容器提供的环境中运行之后,该容器可以称为容器实例。
在容器升级过程中,获取到升级的镜像文件(即升级的软件包)后杀死(kill)当前容器,然后在对应的虚拟机中新建一个容器,在新建的容器运行相关进程。
示例的,参考图2,微服务由A、B这2个容器实现,可以收集容器实例A处理的历史数据,对这些历史数据进行训练获得模型1,假设容器A没有进行升级,可以用该模型预测容器实例A是否出现异常。或者,可以收集容器实例B处理的历史数据,对这些历史数据进行训练获得模型2,假设容器B没有进行升级,可以用该模型预测容器实例B是否出现异常。
但如果在模型训练好之前容器进行了升级,则训练好的模型不能用于检测容器实例是否异常。示例的,参考图2,容器实例A进行升级的过程中,容器实例A消亡,容器实例A升级为容器实例C,无法使用模型1去预测容器实例A是否异常,需要等待容器实例C重新累计足够的历史数据后再训练模型,用于容器实例C的异常检测。
容器实例B进行升级的过程中,容器实例B消亡,容器实例B升级为容器实例D,无法使用模型2去预测容器实例B是否异常,需要等待容器实例D重新累计足够的历史数据后再训练模型,用于容器实例D的异常检测。
在实际开发场景中,容器实例的生命周期较短,会陷入无限等待历史训练数据的局面中,导致无法进行容器实例的异常检测。
本申请实施例提供的方法中,训练时把同一个业务(例如,一项微服务)相关的所有容器实例抽象为一个容器实例,即所有容器实例产生的历史数据用于训练一个模型。训练好模型之后,对容器实例进行独立的异常检测,保证每个容器实例的异常情况都会被单独上报,解决了无法针对容器实例进行异常检测的问题。
此外,针对该业务扩容场景中新增的容器实例,即使新增的容器本身没有历史数据,也不需要积累历史数据积累就可以利用已经训练好的模型快速进行异常检测。
示例的,参考图3,以容器实例访问的IP地址来标记容器实例,与微服务1相关的容器实例为192.168.0.1、192.168.0.2、192.168.0.3以及192.168.0.4,收集这四个容器实例的历史数据进行模型训练,将这四个容器实例抽象为一个容器实例。训练好的模型可以单独检测容器实例192.168.0.1是否异常,或检测容器实例192.168.0.2是否异常,或检测容器实例192.168.0.3是否异常,或容器实例192.168.0.4是否异常。
图4所示为本申请实施例提供的装置40的硬件结构示意图。装置40可以部署在图1所示系统中的设备上,也可以是图1所示系统中的设备,例如,装置40为数据采集设备10、数据接收设备20、控制器30或数据分析设备40。参考图4,装置40包括处理器401、存储器402以及至少一个网络接口(图4中仅是示例性的以包括网络接口403为例进行说明)。其中,处理器401、存储器402以及网络接口403之间互相连接。
处理器401可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
网络接口403是装置40的接口,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等。
存储器402可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态数据中心,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态数据中心,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁数据中心、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路402与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器402用于存储执行本申请方案的计算机执行指令,并由处理器401来控制执行。处理器401用于执行存储器402中存储的计算机执行指令,从而实现本申请下述实施例提供的意图处理方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器401可以包括一个或多个CPU,例如图4中的CPU0和CPU1。
在具体实现中,作为一种实施例,装置40可以包括多个处理器,例如图4中的处理器401和处理器404。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
上述的装置40可以是一个通用设备或者是一个专用设备。在具体实现中,装置40可以是台式机、网络装置、嵌入式设备或其他有图4中类似结构的设备。本申请实施例不限定装置40的类型。
本申请实施例提供一种异常检测方法,如图5所示,应用于图1所示系统中的监控服务器50,所述方法包括以下步骤:
501、利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关。
其中,第一业务可以是虚拟机提供的一项业务,例如,可以是虚拟机提供的一项微服务,示例的,与某个应用程序相关的业务可以作为一项微服务,或者,与应用程序某些功能相关的业务作为一项微服务,本申请实施例对此不做限制。与第一业务相关的容器实例可以认为是用于实现(或执行)第一业务的容器实例。
所述N个容器实例可以是当前时刻之前一段时间内与所述第一业务相关的所有容器实例,也可以是当前时刻之前一段时间内与所述第一业务相关的部分容器实例。所述N为大于或等于1的整数。所述当前时刻是执行步骤501的步骤,所述一段时间的长度可以是监控服务器50设置的,也可以是监控服务器50本地存储的。
容器实例的历史数据可以是在当前时刻之前的一段时间内该容器示例产生的数据,这些数据可以是容器实例的历史行为所产生的一些与容器实例的业务相关的数据,例如,访问时延、处理时延,输入/输出(Input/Output,I/O)时延等。
一种可能的实现方式中,在利用同一个业务相关的多个容器实例的历史数据训练模型时,把这些容器实例抽象为一个目前容器实例,再利用这些数据训练模型。例如,将所述N个容器实例的历史数据标记为目标容器实例的历史数据。
具体实现中,将所述N个容器实例的历史数据标记为目标容器实例的历史数据的具体实现可以是:用所述目标容器实例的标识信息标记所述N个容器实例的历史数据。其中,所述目标容器实例可以是所述N个容器实例中任意一个,也可以是抽象出的一个不存在的容器实例。其中,容器实例的标识信息可以是容器实例访问的IP地址。当目标容器实例是抽象出的不存在的容器实例,目标容器实例的标识信息可以是一个抽象的标识,例如,可以是一个不存在的IP地址。
假设所述N个容器实例的历史数据为所述N个容器实例中每一个容器实例在第一周期的第一时刻的历史数据,可以将这些数据标记为所述目标容器实例在N个第二周期的第一时刻的历史数据。所述第一周期的时间长度大于所述第二周期的时间长度。
示例的,第一周期为“月”、第二周期为“天”,假设与第一业务相关的容器实例包括容器实例1、容器实例2以及容器实例3,所述N个容器实例的历史数据可以是容器实例1、容器实例2以及容器实例3在过去一个月(在执行步骤501的时刻之前的一个月)内的历史数据。例如,包括容器实例1在3号的历史数据,容器实例2在4号的数据以及容器实例3在5号的历史数据,可以将这些数据标记为目标容器实例(例如,容器实例x)在9月3号、9月4号、9月5号的3条历史数据。
一种可能的实现方式中,所述利用虚拟机中N个容器实例的历史数据训练第一模型的具体实现包括:根据所述N个容器实例的历史数据和所述第一模型的超参数确定所述第一模型的M个特征的异常状态信息;所述异常状态信息用于检测与所述异常状态信息对应的特征是否异常,从未根据模型的特征是否异常判断容器实例是否异常。
一种可能的实现方式中,所述M个特征的异常状态信息包括以下一项或多项:所述N个容器实例的相关指标的数值阈值、所述N个容器实例的相关指标的异常度阈值、所述N个容器实例的接口访问频率阈值。
其中,所述N个容器实例的相关指标的数值阈值用于表征所述N个容器实例的相关指标的数值的正常状态;所述数值阈值可以是数值的上限和/或下限。示例的,所述N个容器实例的相关指标为API接口访问次数,所述数值阈值可以是API接口访问次数的上限或下限。所述N个容器实例的相关指标的正常数值应该不超过指标数值的上行,不低于指标数值的下限。当API接口访问次数超过上限或低于下限,表明相关指标发生异常。
所述N个容器实例的相关指标的异常度阈值用于表征所述N个容器实例的相关指标正常的变化幅度。所述异常度阈值可以是所述相关指标的正常变化幅度的上限和/或下限。示例的,所述N个容器实例的相关指标为API接口访问次数(或API接口访问次数),所述异常度阈值可以是API接口访问次数的正常变化幅度的上限和/或下限。所述相关指标的正常变化幅度应该不超过异常度阈值指示的变化幅度上限,或者,不低于异常度阈值指示的变化幅度下限。也就是说,正常情况下所述相关指标的数值的变化幅度不会过大或过小。当所述相关指标的数值的变化幅度不会过大,超过异常度阈值,表明相关指标发生异常。或者,当所述相关指标的数值的变化幅度不会过小,低于异常度阈值,表明相关指标发生异常。
所述N个容器实例的接口访问频率阈值用于表征所述N个容器实例正常的接口访问频率,接口访问频率阈值可以是容器实例接口访问频率的上限和/或下限。当容器实例的接口访问频率出现异常,可以发出告警,指示容器实例出现异常。例如,当容器实例的接口访问频率超过接口访问频率的上限或低于接口访问频率的下限,可以发出告警,指示容器实例出现异常。
一种可能的实现方式中,若容器实例在过去一段时间内存在掉零(“0”)行为(即接口访问频率较低,例如低于接口访问频率的下限),当容器实例后续再出现掉零行为时,可以不发出告警。具体地,可以根据容器实例过去的接口访问频率,判断容器实例在过去是否存在掉零行为。
示例的,接口访问频率可以是一个滑动窗口内零请求量的窗口所占的比例。以时刻X为例,滑动窗口可以是时刻X之前长度为m分钟的一个窗口,以一分钟为一个监测窗长,判断一分钟内是否有发生掉零行为。假设滑动窗口(即时刻X之前长度为m分钟的一个窗口)中n分钟存在掉零行为,则接口访问频率可以是n/m。
当接口访问频率低于一个阈值(例如,低于接口访问频率的下限),可以认为容器实例过去存在掉零行为,当后续(例如,时刻X之后)检测到容器实例再次出现掉零行为,一种可能的处理是,不发出告警。
502、利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。
具体实现中,步骤501训练好的第一模型可以用于任意一个与第一业务相关的容器实例的异常检测。示例的,可以对扩容场景下新增的容器实例进行异常检测,例如,所述第一容器实例为所述虚拟机新创建的容器实例,该容器实例与第一业务相关。或者,容器实例的历史数据参与了模型训练,当该容器实例在升级过程中消亡,可以对该容器升级后的新出现的容器实例进行异常检测,例如,所述第一容器实例为所述N个容器实例中的第二容器实例更新后的容器实例。当然,如果容器实例的历史数据未参与到第一模型的训练,但该容器实例与第一业务相关,可以利用第一模型对该容器实例进行升级后新增的容器实例进行异常检测。或者,容器实例的历史数据参与了第一模型的训练,后续可以利用第一模型对该容器实例进行异常检测,例如,所述第一容器实例为所述N个容器实例中的任意一个容器实例。
一种可能的实现方式中,所述利用所述第一模型对第一容器实例进行异常检测,包括:当检测出所述M个特征中任意一个特征出现异常,则确定所述与所述第一业务相关的容器实例异常。具体地,将第一容器实例在一段时间内的数据输入第一模型,当根据输入的数据确定所述M个特征中任意一个特征出现异常,则确定所述第一容器实例异常。
一种可能的方式中,通过图6所示的步骤训练所述N个容器实例的历史数据,获得第一模型。参考图6,具体包括以下四个步骤:
S1、加载N个容器实例的历史数据和模型超参数。
其中,N个容器实例的历史数据可以是N个容器实例在过去一段时间内的数据,所述获取一段时间可以是执行步骤S1的时刻之前的一段时间。
模型超参数主要包括灵敏度、指标类型等。灵敏度用于控制模型异常告警灵敏度,即模型检测异常的灵敏度。灵敏度越高,越容易检测出异常。指标类型为用于训练容器实例异常检测模型的指标的类型,可以包括请求量,时延,成功率,失败率,下载速率等。
S2、清洗历史数据。
清洗历史数据主要是过滤异常数据。所述异常数据可以是与指标常规特性不匹配的数据。示例的,接口A调用的时延大概在100ms左右,假设历史数据中某一条数据记录调用接口A的时延达到5s,那么可以认为这条数据为异常数据,在步骤S2中可以将这条数据过滤掉,后续不参与模型训练。
S3、确定模型相关指标的识别周期。
其中,模型相关指标为模型超参数中的指标类型指示的指标,可以是用于对模型进行异常检测的指标,通过对模型相关指标进行检测可以判断模型是否异常。
具体实现中,可以计算指标数据在不同周期内的方差,方差越小,表明指标数据更符合对应周期的特性。例如,计算指标数据的天方差,周方差,月方差,假设月方差最小,表明指标数据在一月内的变化更符合指标数据的特征,则指标数据的识别周期为“月”。
S4、确定模型的特征。
其中,模型的特征用于检测容器实例是否异常,例如,将容器实例的数据输入模型,模型根据容器实例的数据判断超出模型的特征的阈值,则发出告警,指示容器实例出现异常。
以Boxplot算法为例,利用Boxplot算法构建的模型的特征可以是指标数值的阈值、指标的异常度阈值、容器实例的接口访问频率阈值。这里的指标可以是模型相关的指标。
具体地,可以把需要训练的数据(例如,前文所述的N个容器实例在过去一段时间的历史数据)汇总,根据指定百分比确定指标数值的上限或下限,例如,有25%的数据大于q1,有25%数据小于q2,其余数据在q1和q2之间。其中,q1和q2分别为指标数值的上限、下限,均为指标数值的阈值。
容器实例的接口访问频率阈值可以是容器实例在过去一段时间掉0行为所占的比例的上限,若接口访问频率大于阈值,例如,过去一段时间的某个滑动窗口内请求量为0的个数超过接口访问频率阈值,则认为该容器实例在过去一段时间存在掉零行为。在后续检测到该容器实例存在掉零行为时,可以不发出告警。
指标的异常度阈值用于限制指标正常的变化程度,当指标的变化长度超过阈值,则表明指标变化异常度。例如,一个n分钟的窗口累加异常度高过异常度上限或者低于异常度下限,则认为容器实例出现异常。
在进行异常检测时,指标数值的阈值、指标的异常度阈值、容器实例的接口访问频率阈值中任意一个出现异常就可以触发告警,表明容器实例出现异常。
以下结合具体事例介绍本申请实施例提供的异常检测方法,其中,可以利用IP地址(即insranceIp)标记容器实例。参考图7,一个微服务在2020-05-05 20:00:00上报了3个容器实例的数据,分别为容器实例172.16.0.0、容器实例172.16.0.1以及容器实例172.16.0.2的数据。
在训练模型时将上述3个容器实例的历史数据当作一个容器实例的数据进行模型训练。具体地,加载上述3个容器实例的历史数据,对这些数据进行数据清洗,利用清洗后的数据训练模型。
具体地,可以根据容器实例相关指标的识别周期将不同容器实例的历史数据虚拟为同一容器实例的历史数据。例如,假设对独立的容器实例而言,模型相关指标的识别周期是天,每一天都是一个独立的周期,同一指标在每一天的特性曲线大致相同。可以将不同容实例在同一时刻的数据分别等价于同一容器实例在不同天的数据,就可以把不同容器实例的历史数据作为同一个容器实例的历史数据来训练模型上,从而把不同实例的模型特征融合到一个模型上。参考图7,172.16.0.0、容器实例172.16.0.1以及容器实例172.16.0.2在2020-05-05-20:00:00的三条数据虚拟为容器实例127.0.0.1在2020-05-05-20:00:00、2020-05-06-20:00:00、2020-05-07-20:00:00的三条数据。其中,127.0.0.1抽象出来的一个不存在的IP地址,用于标识抽象出来的一个容器实例。
参考图8,在进行模型预测(即利用模型进行容器实例的异常检测),加载之前训练好的模型(例如第一模型),将容器实例的实时数据分别输入模型进行异常检测,将进行异常检测的容器实例与参数模型训练的容器实例进行解耦,即训练模型和预测模型的容器实例可以不同,例如,根据与微服务1相关的容器实例A、B、C的历史数据训练第一模型,随后单独对容器实例A、B、C进行异常检测,分别生成告警A、B、C。
需要说明的是,在进行异常检测时,针对需要预测时间范围内的实例进行单独检测。参考图9,进行模型训练时与同一微服务相关的容器实例有172.16.0.0、172.16.0.1、172.16.0.2,但容器实例172.16.0.2在20:03:00消亡,新产生了172.16.0.3这个容器实例。在进行异常检测时对172.16.0.0、172.16.0.1、172.16.0.3单独进行异常检测。
虽然172.16.0.3是新增的容器实例,但根据本申请实施例提供的方法这个容器实例在产生后很短时间就可以参与到异常检测,不需要针对这个容器实例172.16.0.3重新累积数据、训练模型。
在采用对应各个功能划分各个功能模块的情况下,图10示出上述实施例中所涉及的装置的一种可能的结构示意图。图10所示的装置可以是本申请实施例所述的监控服务器,也可以是监控服务器中实现上述方法的部件,或者,也可以是应用于监控服务器中的芯片。所述芯片可以是片上系统(System-On-a-Chip,SOC)或者是具备通信功能的基带芯片等。如图10所示,装置包括训练单元1001以及检测单元1002。处理单元可以是一个或多个处理器,通信单元可以是收发器或者通信接口。
训练单元1001,以用于支持监控服务器执行步骤501,和/或用于本文所描述的技术的其它过程。
检测单元1002,用于支持监控服务器执行步骤502,和/或用于本文所描述的技术的其它过程。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
如图11所示,装置还可以包括存储单元1003,存储单元1003用于存储装置的程序代码和/或数据。
处理单元1001可以包括至少一个处理器,通信单元1002可以为收发器或者通信接口,存储单元1003可以包括存储器。
本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令;指令用于执行如图5所示的方法。
本申请实施例提供一种包括指令的计算机程序产品,当其在装置上运行时,使得装置执行如图5所示的方法。
本申请实施例一种无线装置,包括:无线装置中存储有指令;当无线装置在图4、图10、图11所示的装置上运行时,使得装置执行如图5所示的方法。该装置可以为芯片。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本申请实施例中的处理器,可以包括但不限于以下至少一种:中央处理单元(central processing unit,CPU)、微处理器、数字信号处理器(DSP)、微控制器(microcontroller unit,MCU)、或人工智能处理器等各类运行软件的计算设备,每种计算设备可包括一个或多个用于执行软件指令以进行运算或处理的核。该处理器可以是个单独的半导体芯片,也可以跟其他电路一起集成为一个半导体芯片,例如,可以跟其他电路(如编解码电路、硬件加速电路或各种总线和接口电路)构成一个SoC(片上系统),或者也可以作为一个ASIC的内置处理器集成在所述ASIC当中,该集成了处理器的ASIC可以单独封装或者也可以跟其他电路封装在一起。该处理器除了包括用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程门阵列(field programmablegate array,FPGA)、PLD(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路。
本申请实施例中的存储器,可以包括如下至少一种类型:只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmabler-only memory,EEPROM)。在某些场景下,存储器还可以是只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
本申请中,“至少一个”是指一个或者多个。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请所提供的几个实施例中,应该理解到,所揭露的数据库访问装置和方法,可以通过其它的方式实现。例如,以上所描述的数据库访问装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,数据库访问装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种异常检测方法,其特征在于,包括:
利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关,所述N为大于或等于1的整数;
利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。
2.根据权利要求1所述的方法,其特征在于,所述第一容器实例为所述N个容器实例中的第二容器实例更新后的容器实例,或者,
所述第一容器实例为所述虚拟机新创建的容器实例;或者,
所述第一容器实例为所述N个容器实例中的任意一个容器实例。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述N个容器实例的历史数据标记为目标容器实例的历史数据。
4.根据权利要求3所述的所述的方法,其特征在于,所述将所述N个容器实例的历史数据标记为目标容器实例的历史数据,包括:
将所述N个容器实例在第一周期的第一时刻的历史数据标记为所述目标容器实例在N个第二周期的第一时刻的历史数据;所述第一周期的时间长度大于所述第二周期的时间长度。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述利用虚拟机中N个容器实例的历史数据训练第一模型,包括:
根据所述N个容器实例的历史数据和所述第一模型的超参数确定所述第一模型的M个特征的异常状态信息;所述异常状态信息用于检测与所述异常状态信息对应的特征是否异常。
6.根据权利要求5所述的方法,其特征在于,所述利用所述第一模型对第一容器实例进行异常检测,包括:
当检测出所述M个特征中任意一个特征出现异常,则确定所述与所述第一业务相关的容器实例异常。
7.根据权利要求5或6所述的方法,其特征在于,所述M个特征的异常状态信息包括以下一项或多项:
所述N个容器实例的相关指标的数值阈值、所述相关指标的异常度阈值、所述N个容器实例的接口访问频率阈值;
其中,所述相关指标的数值阈值为所述相关指标的数值的上限和/或下限,所述相关指标的异常度阈值为所述相关指标的数值的变化幅度的上限和/或下限,所述N个容器实例的接口访问频率阈值为所述N个容器实例的接口访问频率的上限和/或下限。
8.一种装置,其特征在于,包括:
训练单元,用于利用虚拟机中N个容器实例的历史数据训练第一模型,所述N个容器实例与所述虚拟机执行的第一业务相关,所述N为大于或等于1的整数;
检测单元,用于利用所述第一模型对第一容器实例进行异常检测,所述第一容器实例与所述第一业务相关。
9.根据权利要求8所述的装置,其特征在于,所述第一容器实例为所述N个容器实例中的第二容器实例更新后的容器实例,或者,
所述第一容器实例为所述虚拟机新创建的容器实例;或者,
所述第一容器实例为所述N个容器实例中的任意一个容器实例。
10.根据权利要求8或9所述的装置,其特征在于,所述训练单元还用于,将所述N个容器实例的历史数据标记为目标容器实例的历史数据。
11.根据权利要求10所述的装置,其特征在于,所述训练单元具体用于,将所述N个容器实例在第一周期的第一时刻的历史数据标记为所述目标容器实例在N个第二周期的第一时刻的历史数据;所述第一周期的时间长度大于所述第二周期的时间长度。
12.根据权利要求8-11任一项所述的装置,其特征在于,所述训练单元具体用于,根据所述N个容器实例的历史数据和所述第一模型的超参数确定所述第一模型的M个特征的异常状态信息;所述异常状态信息用于检测与所述异常状态信息对应的特征是否异常。
13.根据权利要求12所述的装置,其特征在于,所述检测单元用于,当检测出所述M个特征中任意一个特征出现异常,则确定所述与所述第一业务相关的容器实例异常。
14.根据权利要求所述M个特征的异常状态信息包括以下一项或多项:
所述N个容器实例的相关指标的数值阈值、所述相关指标的异常度阈值、所述N个容器实例的接口访问频率阈值;
其中,所述相关指标的数值阈值为所述相关指标的数值的上限和/或下限,所述相关指标的异常度阈值为所述相关指标的数值的变化幅度的上限和/或下限,所述N个容器实例的接口访问频率阈值为所述N个容器实例的接口访问频率的上限和/或下限。
15.一种装置,其特征在于,包括处理器,所述处理器与存储器耦合;
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,以使得所述装置执行如权利要求1至7中任一项所述的方法。
16.一种计算机可读存储介质,包括程序或指令,当所述程序或指令被处理器运行时,如权利要求1至7中任意一项所述的方法被执行。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令被运行时,使得如权利要求1至7任一项所述的方法被执行。
18.一种芯片,其特征在于,所述芯片包括处理器和接口电路,所述接口电路和所述处理器耦合,所述处理器用于运行计算机程序或指令,使得如权利要求1至7任一项所述的方法被执行。
CN202011064526.8A 2020-09-30 2020-09-30 一种异常检测方法及装置 Pending CN114327963A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011064526.8A CN114327963A (zh) 2020-09-30 2020-09-30 一种异常检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011064526.8A CN114327963A (zh) 2020-09-30 2020-09-30 一种异常检测方法及装置

Publications (1)

Publication Number Publication Date
CN114327963A true CN114327963A (zh) 2022-04-12

Family

ID=81031708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011064526.8A Pending CN114327963A (zh) 2020-09-30 2020-09-30 一种异常检测方法及装置

Country Status (1)

Country Link
CN (1) CN114327963A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065597A (zh) * 2022-06-14 2022-09-16 中国电信股份有限公司 一种容器资源配置方法、装置、介质和设备
CN116107859A (zh) * 2023-04-11 2023-05-12 北京宝兰德软件股份有限公司 容器故障预测方法、装置、电子设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115065597A (zh) * 2022-06-14 2022-09-16 中国电信股份有限公司 一种容器资源配置方法、装置、介质和设备
CN115065597B (zh) * 2022-06-14 2024-06-07 中国电信股份有限公司 一种容器资源配置方法、装置、介质和设备
CN116107859A (zh) * 2023-04-11 2023-05-12 北京宝兰德软件股份有限公司 容器故障预测方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US11151014B2 (en) System operational analytics using additional features for health score computation
EP2911060B1 (en) Method and device for determining resource leakage and for predicting resource usage state
JP2019511054A (ja) 分散クラスタ型訓練方法及び装置
CN109947079A (zh) 基于边缘计算的区域异常检测方法和边缘计算设备
US20120151276A1 (en) Early Detection of Failing Computers
US10430268B2 (en) Operations management system, operations management method and program thereof
CN110187980B (zh) 消息队列监控方法、装置、电子设备及可读存储介质
CN112527599A (zh) 智能监控方法、装置、电子设备及可读存储介质
CN104937548A (zh) 动态图的性能监视
CN114327963A (zh) 一种异常检测方法及装置
JP2022522474A (ja) 組み込みソフトウェアアプリケーションのための機械学習ベースの異常検出
US20170244595A1 (en) Dynamic data collection profile configuration
CN105872061A (zh) 一种服务器集群管理方法、装置及系统
CN104750605A (zh) 将内核对象信息包括在用户转储中
CN116560794A (zh) 虚拟机的异常处理方法和装置、介质和计算机设备
JP6252309B2 (ja) 監視漏れ特定処理プログラム,監視漏れ特定処理方法及び監視漏れ特定処理装置
CN110018932B (zh) 一种容器磁盘的监控方法及装置
CN112526905B (zh) 一种针对指标异常的处理方法及系统
CN105849703B (zh) 通过上下文分区的经分类的事件监视
CN111459815B (zh) 一种实时计算引擎测试方法和系统
CN113497721B (zh) 网络故障定位方法与装置
CN115794479B (zh) 日志数据处理方法、装置、电子设备及存储介质
CN113157401A (zh) 一种Java虚拟机管理方法及装置
CN109298989A (zh) 业务指标阈值获取方法及装置
CN112860523A (zh) 批量作业处理的故障预测方法、装置和服务器

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