用于实时在线检测虚拟机状态的方法和系统与流程

文档序号:25297048发布日期:2021-06-04 11:46阅读:56来源:国知局
用于实时在线检测虚拟机状态的方法和系统与流程

1.本公开涉及云计算领域,特别涉及一种用于实时在线检测虚拟机状态的方法和系统。


背景技术:

2.云计算通过虚拟化技术为用户提供服务。虚拟机作为云计算服务的载体,其异常状态不仅会影响用户的使用体验,还可能导致业务系统无法运行,造成各种难以估量的损失。及时检测出虚拟机运行中的异常状态,提示运维人员采取必要措施,是保障云计算平台下各业务系统平稳运行的重要手段。
3.传统检测方法分为异常检测(anomaly detection)和误用检测(misuse detection)。异常检测首先定义正常行为,并将所有其它行为定义为异常。误用检测首先定义异常行为,并将其它所有行为定义为正常。异常检测能够检测出未知的异常行为,但是如果无法定义所有的正常行为,将出现较高的误报率。误用检测的误报率低,检测速度快,但是无法发现未知的异常行为,有较高的漏报率。
4.在云计算环境中,虚拟机状态在线监控数据主要有三个特点:1)数据的规模大、类型多;2)人工标注成本高,有正常或异常标记的样本数据少,大量数据未标记;3)数据分布不平衡,采集到的绝大多数监控数据都是正常数据,异常数据的样本数量小。针对云环境中虚拟机状态的监控,目前采用的异常检测方法主要是以固定时间间隔采集虚拟机正常状态时的指标数据,然后利用长短时记忆神经网络离线训练虚拟机的正常行为模型,并将训练模型部署到服务器上进行在线实时检测。然而,此方法难以准确采集全部的虚拟机正常行为状态数据,误报率较高;同时没有充分利用虚拟机运行中产生的少量异常数据,降低了检测效率。


技术实现要素:

5.本公开提供一种实时高效地在线检测虚拟机状态的方案,以有效降低漏报率和误报率。
6.根据本公开实施例的第一方面,提供一种用于实时在线检测虚拟机状态的方法,包括:从训练模型数据库中读取经过训练得到的单分类支持向量机ocsvm模型参数、深度自编码网络daen模型参数和支持向量机svm分类模型参数,以完成ocsvm模型、daen模型和svm分类模型的初始化;在线获取虚拟机关键性能指标kpi数据;利用ocsvm模型对kpi数据进行误用检测,以得到第一检测结果;利用daen模型对kpi数据进行异常检测,以得到第二检测结果;判断第一检测结果和第二检测结果是否一致;若第一检测结果和第二检测结果一致,则将第一检测结果或第二检测结果作为kpi数据的检测结果输出;若第一检测结果和第二检测结果不一致,则利用svm分类模型对第一检测结果和第二检测结果进行分类判断,以输出kpi数据的检测结果。
7.在一些实施例中,利用ocsvm模型对kpi数据进行误用检测包括:利用ocsvm模型对
kpi数据进行处理,以确定pki数据与ocsvm模型的决策边界的差值;根据所述差值判断kpi数据是否位于决策边界内部;若kpi数据位于决策边界内部,则输出的第一检测结果指示kpi数据为异常;若kpi数据位于决策边界外部,则输出的第一检测结果指示kpi数据为正常。
8.在一些实施例中,利用daen模型对kpi数据进行异常检测包括:利用daen模型对kpi数据进行处理,以计算kpi数据的平方误差值;判断kpi数据的平方误差值是否小于预设的平方误差门限;若kpi数据的平方误差值小于预设的平方误差门限,则输出的第二检测结果指示kpi数据为正常;若kpi数据的平方误差值大于预设的平方误差门限,则输出的第二检测结果指示kpi数据为异常。
9.在一些实施例中,所述kpi信息包括cpu负载、cpu使用率、进程总数、处于运行状态的进程总数、进程占用内存、物理内存总量、物理内存可用容量、网卡流出速率、网卡流入速率、磁盘读速率、磁盘写速率、文件系统分区已使用空间和空闲空间中的至少一项。
10.在一些实施例中,获取虚拟机kpi历史监测数据,其中历史监测数据中包括未标注数据集和已标注数据集,且未标注数据量大于已标注数据量;利用孤立森林算法对未标记数据集中的数据进行处理,以形成标记异常数据集和标记正常数据集;基于标记异常数据集,采用ocsvm算法训练异常行为模型,并利用已标注数据集对异常行为模型进行调整,以得到ocsvm模型,将ocsvm模型参数存入训练模型数据库中;基于标记正常数据集,采用daen算法训练正常行为模型,并利用已标注数据集对正常行为模型进行调整,以得到daen模型,将daen模型参数存入训练模型数据库中;利用ocsvm模型计算已标注数据集中各数据到ocsvm模型的决策边界的差值,并根据计算出的差值生成第一运算数据集;利用daen模型计算已标注数据集中各数据的平方误差值,并计算各平方误差值与预设平方误差门限之间的差值,根据计算出的差值生成第二运算数据集;将第一运算数据集和第二运算数据集合并,并添加已标注数据集中对应的类别标记,以得到第三运算数据集;利用svm分类算法对第三运算数据集进行二分类训练,以得到svm分类模型,将svm分类模型参数存入训练模型数据库中。
11.在一些实施例中,在已标注数据集中,被标注为正常的数据和被标注为异常的数据分布均衡。
12.根据本公开实施例的第二方面,提供一种用于实时在线检测虚拟机状态的系统,包括:模型初始化模块,被配置为从训练模型数据库中读取经过训练得到的单分类支持向量机ocsvm模型参数、深度自编码网络daen模型参数和支持向量机svm分类模型参数,以完成ocsvm模型、daen模型和svm分类模型的初始化;在线检测模块,被配置为在线获取虚拟机关键性能指标kpi数据,利用ocsvm模型对kpi数据进行误用检测,以得到第一检测结果,利用daen模型对kpi数据进行异常检测,以得到第二检测结果,判断第一检测结果和第二检测结果是否一致,若第一检测结果和第二检测结果一致,则将第一检测结果或第二检测结果作为kpi数据的检测结果输出,若第一检测结果和第二检测结果不一致,则利用svm分类模型对第一检测结果和第二检测结果进行分类判断,以输出kpi数据的检测结果。
13.在一些实施例中,在线检测模块被配置为利用ocsvm模型对kpi数据进行处理,以确定pki数据与ocsvm模型的决策边界的差值,根据所述差值判断kpi数据是否位于决策边界内部,若kpi数据位于决策边界内部,则输出的第一检测结果指示kpi数据为异常,若kpi
数据位于决策边界外部,则输出的第一检测结果指示kpi数据为正常。
14.在一些实施例中,在线检测模块被配置为利用daen模型对kpi数据进行处理,以计算kpi数据的平方误差值,判断kpi数据的平方误差值是否小于预设的平方误差门限,若kpi数据的平方误差值小于预设的平方误差门限,则输出的第二检测结果指示kpi数据为正常,若kpi数据的平方误差值大于预设的平方误差门限,则输出的第二检测结果指示kpi数据为异常。
15.在一些实施例中,所述kpi信息包括cpu负载、cpu使用率、进程总数、处于运行状态的进程总数、进程占用内存、物理内存总量、物理内存可用容量、网卡流出速率、网卡流入速率、磁盘读速率、磁盘写速率、文件系统分区已使用空间和空闲空间中的至少一项。
16.在一些实施例中,上述系统还包括:训练模块,被配置为获取虚拟机kpi历史监测数据,其中历史监测数据中包括未标注数据集和已标注数据集,且未标注数据量大于已标注数据量,利用孤立森林算法对未标记数据集中的数据进行处理,以形成标记异常数据集和标记正常数据集,基于标记异常数据集,采用ocsvm算法训练异常行为模型,并利用已标注数据集对异常行为模型进行调整,以得到ocsvm模型,将ocsvm模型参数存入训练模型数据库中;基于标记正常数据集,采用daen算法训练正常行为模型,并利用已标注数据集对正常行为模型进行调整,以得到daen模型,将daen模型参数存入训练模型数据库中;利用ocsvm模型计算已标注数据集中各数据到ocsvm模型的决策边界的差值,并根据计算出的差值生成第一运算数据集;利用daen模型计算已标注数据集中各数据的平方误差值,并计算各平方误差值与预设平方误差门限之间的差值,根据计算出的差值生成第二运算数据集;将第一运算数据集和第二运算数据集合并,并添加已标注数据集中对应的类别标记,以得到第三运算数据集;利用svm分类算法对第三运算数据集进行二分类训练,以得到svm分类模型,将svm分类模型参数存入训练模型数据库中。
17.在一些实施例中,在已标注数据集中,被标注为正常的数据和被标注为异常的数据分布均衡。
18.根据本公开实施例的第三方面,提供一种用于实时在线检测虚拟机状态的系统,包括:存储器,被配置为存储指令;处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如上述任一实施例所述的方法。
19.根据本公开实施例的第四方面,提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上述任一实施例涉及的方法。
20.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
21.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
22.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
23.图1是根据本公开一个实施例的用于实时在线检测虚拟机状态的方法的流程示意图;
24.图2是根据本公开另一个实施例的用于实时在线检测虚拟机状态的方法的流程示
意图;
25.图3是根据本公开一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图;
26.图4是根据本公开另一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图;
27.图5是根据本公开另一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图。
28.应当明白,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。此外,相同或类似的参考标号表示相同或类似的构件。
具体实施方式
29.现在将参照附图来详细描述本公开的各种示例性实施例。对示例性实施例的描述仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本公开可以以许多不同的形式实现,不限于这里所述的实施例。提供这些实施例是为了使本公开透彻且完整,并且向本领域技术人员充分表达本公开的范围。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、材料的组分和数值应被解释为仅仅是示例性的,而不是作为限制。
30.本公开中使用的“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。
31.本公开使用的所有术语(包括技术术语或者科学术语)与本公开所属领域的普通技术人员理解的含义相同,除非另外特别定义。还应当理解,在诸如通用字典中定义的术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
32.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
33.图1是根据本公开一个实施例的用于实时在线检测虚拟机状态的方法的流程示意图。在一些实施例中,下面的用于实时在线检测虚拟机状态的方法步骤由用于实时在线检测虚拟机状态的系统执行。
34.在步骤101,从训练模型数据库中读取经过训练得到的ocsvm(one class support vector machine,单分类支持向量机)模型参数、daen(deep autoencoder network,深度自编码网络)模型参数和svm(support vector machine,支持向量机)分类模型参数,以完成ocsvm模型、daen模型和svm分类模型的初始化。
35.在一些实施例中,训练模型数据库可以为mysql或其它类型的数据库。
36.在步骤102,在线获取虚拟机kpi(key performance indicator,关键性能指标)数据。
37.在一些实施例中,kpi信息包括cpu(central processing unit,中央处理单元)负载、cpu使用率、进程总数、处于运行状态的进程总数、进程占用内存、物理内存总量、物理内存可用容量、网卡流出速率、网卡流入速率、磁盘读速率、磁盘写速率、文件系统分区已使用空间和空闲空间中的至少一项。
38.在一些实施例中,可通过在目标虚拟机上部署zabbix agent采集kpi数据。
39.在步骤103,利用ocsvm模型对kpi数据进行误用检测,以得到第一检测结果。
40.在一些实施例中,通过利用ocsvm模型对kpi数据进行处理,以确定pki数据与ocsvm模型的决策边界的差值,并根据差值判断kpi数据是否位于决策边界内部。若kpi数据位于决策边界内部,则输出的第一检测结果指示kpi数据为异常;若kpi数据位于决策边界外部,则输出的第一检测结果指示kpi数据为正常。
41.在步骤104,利用daen模型对kpi数据进行异常检测,以得到第二检测结果。
42.在一些实施例中,通过利用daen模型对kpi数据进行处理,以计算kpi数据的平方误差值,判断kpi数据的平方误差值是否小于预设的平方误差门限,若kpi数据的平方误差值小于预设的平方误差门限,则输出的第二检测结果指示kpi数据为正常;若kpi数据的平方误差值大于预设的平方误差门限,则输出的第二检测结果指示kpi数据为异常。
43.在步骤105,判断第一检测结果和第二检测结果是否一致。
44.若第一检测结果和第二检测结果一致,则执行步骤106;若第一检测结果和第二检测结果不一致,则执行步骤107。
45.在步骤106,将第一检测结果或第二检测结果作为kpi数据的检测结果输出。
46.在步骤107,利用svm分类模型对第一检测结果和第二检测结果进行分类判断,以输出kpi数据的检测结果。
47.这里需要说明的是,由于svm分类本身并不是本公开的发明点所在,因此这里不展开描述。
48.在本公开上述实施例提供的用于实时在线检测虚拟机状态的方法中,通过利用经过训练的ocsvm模型、daen模型和svm分类模型,对在线数据进行检测,从而在数据总量大且标记数据少的情况下,能够实时高效地在线检测虚拟机状态,及时发现运行中的异常。
49.图2是根据本公开另一个实施例的用于实时在线检测虚拟机状态的方法的流程示意图。在一些实施例中,下面的用于实时在线检测虚拟机状态的方法步骤由用于实时在线检测虚拟机状态的系统执行。
50.在步骤201,获取虚拟机kpi历史监测数据,其中历史监测数据中包括未标注数据集和已标注数据集,且未标注数据量大于已标注数据量。
51.在一些实施例中,在已标注数据集labeled_dataset中,被标注为正常的数据和被标注为异常的数据分布均衡。
52.在步骤202,利用孤立森林(isolation forest)算法对未标记数据集中的数据进行处理,以形成标记异常数据集和标记正常数据集。
53.例如,由标记异常的数据组成的标记异常数据集用if_abnormal_dataset表示,由标记正常的数据组成的标记正常数据集用if_normal_dataset表示。
54.这里需要说明的是,在采用孤立森林算法对大量未标注数据进行处理的过程中,将分布稀疏且离密度高的群体较远的点标记为异常,其它标记为正常。
55.在步骤203,基于标记异常数据集if_abnormal_dataset,采用ocsvm算法训练异常行为模型,并利用已标注数据集labeled_dataset对异常行为模型进行调整,以得到ocsvm模型,将ocsvm模型参数存入训练模型数据库中。
56.ocsvm模型中具有决策边界,模型输出值为数据点到决策边界的差值。当数据点位
于决策边界内时,被判定为异常,位于决策边界之外时,被判定为正常。
57.在步骤204,基于标记正常数据集,采用daen算法训练正常行为模型,并利用已标注数据集labeled_dataset对正常行为模型进行调整,以得到daen模型,将daen模型参数存入训练模型数据库中。
58.daen模型的输出值为平方误差值。daen模型中具有平方误差阈值,当输入数据的计算结果低于此阈值时,被判定为正常,超过此阈值时,被判定为异常。
59.在步骤205,利用ocsvm模型计算已标注数据集labeled_dataset中各数据到ocsvm模型的决策边界的差值,并根据计算出的差值生成第一运算数据集ocsvm_dataset。
60.在步骤206,利用daen模型计算已标注数据集labeled_dataset中各数据的平方误差值,并计算各平方误差值与预设平方误差门限之间的差值,根据计算出的差值生成第二运算数据集daen_dataset。
61.在步骤207,将第一运算数据集ocsvm_dataset和第二运算数据集daen_dataset合并,并添加已标注数据集labeled_dataset中对应的类别标记,以得到第三运算数据集dataset。
62.在步骤208,利用svm分类算法对第三运算数据集dataset进行二分类训练,以得到svm分类模型,将svm分类模型参数存入训练模型数据库中。
63.在一些实施例中,孤立森林算法、ocsvm算法和svm分类算法可利用spark实现,daen算法可利用tensorflow实现。
64.图3是根据本公开一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图。如图3所示,用于实时在线检测虚拟机状态的系统包括模型初始化模块31和在线检测模块32。
65.模型初始化模块31被配置为从训练模型数据库中读取经过训练得到的ocsvm模型参数、daen模型参数和svm分类模型参数,以完成ocsvm模型、daen模型和svm分类模型的初始化。
66.在一些实施例中,训练模型数据库可以为mysql或其它类型的数据库。
67.在线检测模块32被配置为在线获取虚拟机kpi数据,利用ocsvm模型对kpi数据进行误用检测,以得到第一检测结果,利用daen模型对kpi数据进行异常检测,以得到第二检测结果,判断第一检测结果和第二检测结果是否一致,若第一检测结果和第二检测结果一致,则将第一检测结果或第二检测结果作为kpi数据的检测结果输出,若第一检测结果和第二检测结果不一致,则利用svm分类模型对第一检测结果和第二检测结果进行分类判断,以输出kpi数据的检测结果。
68.在一些实施例中,kpi信息包括cpu负载、cpu使用率、进程总数、处于运行状态的进程总数、进程占用内存、物理内存总量、物理内存可用容量、网卡流出速率、网卡流入速率、磁盘读速率、磁盘写速率、文件系统分区已使用空间和空闲空间中的至少一项。
69.在一些实施例中,可通过在目标虚拟机上部署zabbix agent采集kpi数据。
70.在一些实施例中,在线检测模块32被配置为利用ocsvm模型对kpi数据进行处理,以确定pki数据与ocsvm模型的决策边界的差值,根据差值判断kpi数据是否位于决策边界内部,若kpi数据位于决策边界内部,则输出的第一检测结果指示kpi数据为异常,若kpi数据位于决策边界外部,则输出的第一检测结果指示kpi数据为正常。
71.在一些实施例中,在线检测模块32被配置为利用daen模型对kpi数据进行处理,以计算kpi数据的平方误差值,判断kpi数据的平方误差值是否小于预设的平方误差门限,若kpi数据的平方误差值小于预设的平方误差门限,则输出的第二检测结果指示kpi数据为正常,若kpi数据的平方误差值大于预设的平方误差门限,则输出的第二检测结果指示kpi数据为异常。
72.图4是根据本公开另一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图。图4与图3的不同之处在于,在图4所示实施例中,系统还包括训练模块33。
73.训练模块33被配置为获取虚拟机kpi历史监测数据,其中历史监测数据中包括未标注数据集和已标注数据集,且未标注数据量大于已标注数据量。
74.在一些实施例中,在已标注数据集labeled_dataset中,被标注为正常的数据和被标注为异常的数据分布均衡。
75.训练模块33利用孤立森林算法对未标记数据集中的数据进行处理,以形成标记异常数据集和标记正常数据集,基于标记异常数据集,采用ocsvm算法训练异常行为模型,并利用已标注数据集对异常行为模型进行调整,以得到ocsvm模型,将ocsvm模型参数存入训练模型数据库中;基于标记正常数据集,采用daen算法训练正常行为模型,并利用已标注数据集对正常行为模型进行调整,以得到daen模型,将daen模型参数存入训练模型数据库中;利用ocsvm模型计算已标注数据集中各数据到ocsvm模型的决策边界的差值,并根据计算出的差值生成第一运算数据集;利用daen模型计算已标注数据集中各数据的平方误差值,并计算各平方误差值与预设平方误差门限之间的差值,根据计算出的差值生成第二运算数据集;将第一运算数据集和第二运算数据集合并,并添加已标注数据集中对应的类别标记,以得到第三运算数据集;利用svm分类算法对第三运算数据集进行二分类训练,以得到svm分类模型,将svm分类模型参数存入训练模型数据库中。
76.这里需要说明的是,ocsvm模型中具有决策边界,模型输出值为数据点到决策边界的差值。当数据点位于决策边界内时,被判定为异常,位于决策边界之外时,被判定为正常。
77.此外,daen模型的输出值为平方误差值。daen模型中具有平方误差阈值,当输入数据的计算结果低于此阈值时,被判定为正常,超过此阈值时,被判定为异常。
78.在一些实施例中,孤立森林算法、ocsvm算法和svm分类算法可利用spark实现,daen算法可利用tensorflow实现。
79.图5是根据本公开另一个实施例的用于实时在线检测虚拟机状态的系统的结构示意图。如图5所示,系统包括存储器51和处理器52。
80.存储器51用于存储指令。处理器52耦合到存储器51。处理器52被配置为基于存储器存储的指令执行实现如图1和图2中任一实施例涉及的方法。
81.如图5所示,系统还包括通信接口53,用于与其它设备进行信息交互。同时,该系统还包括总线54,处理器52、通信接口53、以及存储器51通过总线54完成相互间的通信。
82.存储器51可以包含高速ram(random access memory,随机存取存储器),也可还包括nvm(non-volatile memory,非易失性存储器)。例如至少一个磁盘存储器。存储器51也可以是存储器阵列。存储器51还可能被分块,并且块可按一定的规则组合成虚拟卷。
83.此外,处理器52可以是一个中央处理器,或者可以是asic(application specific integrated circuit,专用集成电路),或者是被配置成实施本公开实施例的一个或多个集
成电路。
84.本公开还提供一种计算机可读存储介质。计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如图1和图2中任一实施例涉及的方法。
85.通过实施本公开的方案,能够得到以下有益效果:
86.1)针对未标记数据中异常样本数远小于正常样本数的特点,采用无监督的孤立森林算法对数据进行标注,处理速度快且效果好,极大地减少了运维人员手动标注数据的工作量,降低了成本;
87.2)对于小样本的异常数据,采用ocsvm算法训练异常行为模型,进行误用检测,降低了误报率;
88.3)对于大样本的正常数据,采用daen算法训练正常行为模型,进行异常检测,降低了漏报率;
89.4)利用孤立森林算法标注的大量数据训练模型之后,再采用手动标记的少量样本数据进行模型微调,提高了检测模型的准确率;
90.5)利用ocsvm算法和daen算法对在线数据进行并行处理,当两者判定结果一致时直接输出检测结果,当两者判定结果不一致时,再采用svm分类算法做进一步判定,缩短了计算耗时,保证了实时性,同时也提高了检测的准确性。
91.在一些实施例中,上述功能模块可以实现为用于执行本公开所描述功能的通用处理器、可编程逻辑控制器(programmable logic controller,简称:plc)、数字信号处理器(digital signal processor,简称:dsp)、专用集成电路(application specific integrated circuit,简称:asic)、现场可编程门阵列(field-programmable gate array,简称:fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。
92.至此,已经详细描述了本公开的实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
93.虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1