一种基于日志的云服务问题细粒度智能溯源方法与流程

文档序号:17860884发布日期:2019-06-11 22:51阅读:208来源:国知局
一种基于日志的云服务问题细粒度智能溯源方法与流程

本发明属于云计算领域,特别是涉及一种基于日志的云服务问题细粒度智能溯源方法,针对云操作系统环境,综合利用众多云服务节点产生的混合日志大数据,借助机器学习的智能化技术从遇到过的异常中学习积累知识,为云用户操作对应的服务异常自动地找到根源。



背景技术:

云计算提供一种能够通过网络按需自助访问计算资源的模式,这些资源来自一个共享的高弹性虚拟资源池,该模式能够以高效的方式快速处理资源的获取和释放,同时能够保证自身的高可用性。借助诸如openstack的开源云操作系统,学校、企业、政府等各组织机构可以构建个性化私有云、公有云及混合云。开源云操作系统的出现给构建云环境带来便利,同时其系统复杂性也给云环境的运维带来挑战。不管是由于受到外部攻击原因还是由于系统自身相关的其他原因,在云计算系统高负荷运行过程中出现的异常会直接影响云用户,可能给云用户带来不可估量的损失。因此,建立可信赖的云操作系统环境,对云操作系统环境中的异常进行高效溯源并及时修复是极为迫切而关键的。

日志是用于系统运行时行为分析的关键数据源,通常也是生产环境中唯一可用的直接记录系统程序执行状态详细信息的数据来源,从系统日志挖掘系统运行时信息是当前实现自动化系统异常检测和问题诊断的重要途径之一,特别是针对诸如云计算系统这类大规模分布式系统。一方面,可以从日志中抽象出实时的系统工作流图模型,实现对系统工作流的自动监控及异常检测,同时还可以进一步结合源码,提高结果的准确性;另一方面,可以利用机器学习的方法对日志进行分析,首先是检测系统是否出现异常,包括攻击检测、云计算系统合规性判断、系统执行程序控制流异常检测等,再次是分析系统异常的原因,比如借助系统中的历史信息、故障注入技术等构建知识库,通过识别新产生的日志来进行自动的异常诊断甚至修复。

日志解析技术通常是日志分析自动化的第一步,通过对日志进行解析可以将原始日志抽象为日志事件,建立实际日志消息与源码中的日志输出语句之间的映射关系,从而实现对非结构化的日志结构化处理。目前已有很多可用的解析工具,主要实现方式有人工定义正则表达式或提取源码中的日志输出语句作为日志事件模板、以及借助数据挖掘技术从原始日志数据中聚集同一日志输出语句产生的日志消息再抽象出日志事件模板的方式。值得一提的是,在优化日志的输出模式方面也有不少现有成果,使系统日志数据能够提供更有效的信息。

在云操作系统环境中,系统对云用户服务请求的处理通常涉及多个相对独立的系统组成成分之间的协作,不同组件可能有各自的日志输出模式,将这些异构的日志数据集成综合分析才能更深入有效地定位异常的原因。针对云操作系统环境中的服务异常溯源问题,目前国内外的现有成果还难以很好地应对:1)综合利用跨组件日志系统化地捕捉多组件协作服务的整体效应;2)将溯源粒度细化到每个云用户操作的问题。



技术实现要素:

针对上述问题,面对云操作系统环境中复杂的日志大数据,本发明的目的是提供一种基于日志的云服务问题细粒度智能溯源方法,基于来自云操作系统的所有服务节点涉及云操作系统不同组成成分的日志,该方法综合利用多源日志所呈现的服务行为片段,还原与某个操作请求对应的多种云服务组件产生的整体效应,以描述日志模式的日志事件序列表示,通过识别日志模式来定位引发云服务异常的根本原因,将溯源粒度细化到每个云用户操作相对应的云服务异常。

为实现上述目的,本发明采取以下技术方案:一种基于日志的云服务问题细粒度智能溯源方法,其特征在于包括以下步骤:

1)基于云操作系统的历史异常记录数据,结合故障注入技术,利用时间相关性分析和机器学习算法抽象出各种异常场景下跨组件日志所反映的整体相关系统任务执行模式,从而构建知识库;

2)利用知识库识别云操作系统新产生的日志对应的整体相关系统任务执行模式,达到细粒度云服务异常自动溯源的目的。

进一步地,所述步骤1)中,基于云操作系统的历史异常记录数据,结合故障注入技术,利用时间相关性分析和机器学习算法抽象出各种异常场景下跨组件日志所反映的整体相关系统任务执行模式,从而构建知识库的方法,包括以下步骤:

1.1)基于历史异常记录数据,结合故障注入及场景重现的方式,以每类用户操作为单位,还原对应的各种云服务异常处理过程,将来自云操作系统各服务节点各组件的日志进行统一的结构化解析,提取日志事件,并以三元组序列形式表示;

1.2)基于提取的日志事件,利用时间相关性分析方法得到与各类用户操作相关的关键日志事件集;

1.3)采用多标识符关联的方式,从步骤1.2)中得到的与各类用户操作相关的关键日志事件集中,还原云操作系统对各类用户操作处理过程对应的整体日志事件序列,该整体日志事件序列代表与各类用户操作处理过程对应的整个云操作系统程序控制执行流;

1.4)基于步骤1.3)得到的整体日志事件序列集,按照异常场景,为每个序列打上标签,构造训练数据,从而进一步以每类用户操作为单位训练识别模型,得到不同原因引发的云服务异常所对应的云操作系统的一般行为模式。

进一步地,所述步骤1.1)中,基于历史异常记录数据,结合故障注入及场景重现的方式,以每类用户操作为单位,还原对应的各种云服务异常处理过程,将来自云操作系统各服务节点各组件的日志进行统一的结构化解析,提取日志事件,并以三元组序列形式表示的方法为:

利用基于最长公共子串数据分析技术的解析方法,从日志消息中抽象出日志事件,以正则表达式的形式表示,该日志事件对应源码中的日志输出语句,其中,各日志消息转换为包含标识符、日志事件和时间戳的三元组的形式。

进一步地,所述步骤1.2)中,基于提取的日志事件,利用时间相关性分析方法得到与各类用户操作相关的关键日志事件集的方法,包括以下步骤:

1.2.1)在固定的跨度为s分钟的时间窗[t(0),t(s-1)]内,针对每类目标用户操作,在其对应的各类异常场景下,有间隔的重复该目标用户操作,获取各节点各组件日志,作为后续获取更加准确的与该用户操作相关的日志事件集合的基础;

1.2.2)将步骤1.2.1)收集的日志事件集合进行解析处理,并将处理得到的三元组序列tlog转化为描述日志事件特征的数据集其中,表示日志事件ei在时间戳时刻发生;

1.2.3)基于得到的数据集,为每个日志事件在该时间窗内的每分钟计算一个发生值来描述该日志事件在该分钟内的发生情况,从而将描述日志事件特征的数据集devents转化为数据表tevents;

1.2.4)基于数据表tevents进行聚类,将在时间上发生模式类似的日志事件聚为一类,从这些类中挑选出与目标用户操作请求相关的日志事件类,即得到与该目标用户操作请求相关的关键日志事件集;

1.2.5)重复步骤1.2.1)~1.2.4),得到与各类用户操作相关的关键日志事件集。

进一步地,所述步骤1.4)中,基于步骤1.3)得到的整体日志事件序列集,按照异常场景,为每个整体日志事件序列打上标签,构造训练数据,并以每类用户操作请求为单位训练识别模型,得到不同原因引发的云服务异常所对应的云操作系统的一般行为模式的方法,包括以下步骤:

1.4.1)结合故障注入及场景重现,大量并发的执行每一类用户操作,还原对应的各类异常场景,得到各历史异常场景所对应的各节点各组件日志;

1.4.2)根据实际异常场景为所还原的日志事件序列打标签,以每一类用户操作为单位,构建得到训练集,其中训练集中的每个样本对应一个日志事件序列,描述相关的系统程序执行行为,每个样本对应的标签描述该日志事件序列对应的异常场景以及相关包括如何修复该类异常的描述信息;

1.4.3)利用自然语言处理工具doc2vec对日志事件序列进行向量化处理,将日志事件序列中的每个日志事件当做一个单词,该序列当做一个文档,将训练集中所有的日志事件序列作为输入,通过doc2vec处理后,将日志事件序列映射到计量空间,从而将训练集中的每个日志事件序列转化为固定维度的向量;

1.4.4)采用一对多策略的logistic回归学习算法,建立转化后的向量与标签之间的关系,从而建立日志事件序列与标签之间的关系,并将识别模型保存起来。

进一步地,所述步骤2)中,利用构建的知识库识别云操作系统新产生的跨组件日志所对应的整体相关系统任务执行模式,达到细粒度云服务异常自动溯源的目的的方法,包括以下步骤:

2.1)如果提供了时间段,则先利用时间段,保留该时间段内的原始日志作为数据源,再利用目标用户操作对应的关键日志事件集,去掉其他无关日志的干扰;

2.2)利用多标识符关联的方式从步骤2.1)得到的日志事件集中分离还原不同的用户操作相关的日志事件序列;

2.3)利用训练得到的doc2vec模型将各个日志事件序列进行向量化处理后,根据logistic回归模型得到的分类结果得到最终每个日志事件序列为正常或者所属的异常类别。

本发明由于采取以上技术方案,其具有以下优点:1、本发明借助智能化的机器学习的方法充分利用云环境中的历史分析数据,通过训练得到知识库,用以识别新的日志模式,捕捉云环境下多组件协作服务的整体效应,从而达到自动的云服务异常溯源的目的,为用户能够享用可信赖的云计算服务提供支撑。2、本发明通过还原描述系统程序执行轨迹的日志事件序列,并识别和分析每个用户操作请求对应的系统处理行为,提供一种细粒度的云服务异常溯源方案,具有较高实用价值。3、本发明综合利用云环境中各节点各服务组件产生的日志数据,能够更加全面深入地定位引发云服务问题的根源,为判定用户在云中执行操作时遇到的异常的原因进而及时修复异常提供帮助。4、本发明从多源日志所还原的涉及多服务组件的与每个用户操作处理相关的日志事件序列,揭示了云操作系统在服务响应处理过程中系统程序的执行情况,这些信息可以与系统源码结合起来,提供一种进一步全面深入理解云操作系统运行原理的途径。因而,本发明可以广泛应用于云计算领域中的云服务异常问题智能溯源中。

附图说明

图1是本发明的总体流程示意图;

图2是本发明的实际应用示意图,描述与openstack的集成。

具体实施方式

下面结合附图和实施实例对本发明进行详细的描述。

本发明提供一种基于日志的云服务问题细粒度智能溯源方法,所谓云服务问题指的是云操作系统提供的服务与用户的服务需求不一致,为达到溯源目的,即定位引发云服务问题的原因,需要监控云服务提供过程,而该过程可以定义为云操作系统对云用户访问云资源操作请求的响应处理,也是云操作系统对云用户访问云资源操作的执行,总体而言,本发明以云操作系统中所有服务节点上各组件对应的日志文件集中作为数据源,对云服务问题进行细粒度智能溯源,具体的包括以下步骤:

1)基于云操作系统的历史异常记录数据,结合故障注入技术,利用时间相关性分析和机器学习算法抽象出各种异常场景下跨组件日志所反映的整体相关系统任务执行模式,也就是不同原因引发的云服务异常所对应的云操作系统的一般行为模式,其中,每种原因引发的云服务异常对应一个异常场景,从而构建知识库;

2)利用构建的知识库识别云操作系统新产生的跨组件日志所对应的整体相关系统任务执行模式,达到细粒度云服务异常自动溯源的目的。

上述步骤1)中,基于云操作系统的历史异常记录数据,结合故障注入技术,利用时间相关性分析和机器学习算法抽象出各种异常场景下跨组件日志所反映的整体相关系统任务执行模式,构建知识库的方法包括以下步骤:

1.1)基于云操作系统的历史异常记录数据,结合故障注入及场景重现的方式,以诸如创建虚拟机的每类用户操作为单位,还原对应的各种云服务异常处理过程,将来自云操作系统各服务节点各组件的日志进行统一的结构化解析,提取日志事件,并以三元组序列形式表示;

1.2)基于提取的日志事件,利用时间相关性分析方法得到与各类用户操作相关的关键日志事件集;

1.3)采用多标识符关联的方式,从步骤1.2)中得到的与各类用户操作相关的关键日志事件集中,还原云操作系统对各类用户操作处理过程对应的整体日志事件序列,该整体日志事件序列代表与各类用户操作处理过程对应的整个云操作系统程序控制执行流;

1.4)基于步骤1.3)得到的整体日志事件序列集,按照异常场景,为每个整体日志事件序列打上标签,构造训练数据,并以每类用户操作为单位训练识别模型,得到不同原因引发的云服务异常所对应的云操作系统的一般行为模式。

上述步骤1.1)中,由于云操作系统环境由多个服务组成成分构成,其源码可能涉及若干独立的项目,因此本发明采取从日志数据本身出发的日志解析方法,提取日志事件,具体的方法为:

利用基于最长公共子串数据分析技术的解析方法,从所有日志消息中抽象出日志事件,并以正则表达式的形式表示,该日志事件对应源码中的日志输出语句。一条日志消息的出现对应其所属的日志事件的出现,代表输出该日志消息的源码中的日志输出语句的执行,也就代表包含该日志输出语句的方法的调用。通过日志解析,可以将一条日志转化为包含标识符(即日志消息中的变量)、日志事件(即日志消息中的常量)和时间戳(即日志消息的出现时间)的三元组的形式。即给定原始日志l=<l1,l2,...,ln>,该步骤后可以得到tlog=<(t1,e(l1),d1),(t2,e(l2),d2),...,(tn,e(ln),dn)>,其中,ti表示日志出现时间,e(li)表示日志消息对应的日志事件,di表示日志消息中的标识符集。所有的日志事件集表示为ev={e1,e2,...,ep},其中p表示从所有日志中抽取出的日志事件总数,显然有e(li)∈ev。

上述步骤1.2)中,由于云操作系统环境中,对云用户操作请求的处理通常涉及不同云服务组件之间的协作以及多个并发子任务的协作,还有系统定时任务与操作类任务并行处理,导致各类并行子任务执行产生的日志相互交错,同一用户操作请求相关的日志可能涉及分布在不同服务节点的不同日志文件,可能需要多个标识符进行关联。基于相同的用户操作请求处理过程产生的日志事件通常具有相同的出现模式的事实,本发明先将时间特征相似的日志事件进行聚类,再挑选出与操作请求发出的时间模式一致的日志事件类作为该类操作请求相关的关键日志事件集合,作为关键日志事件保存起来,即可利用这些关键日志事件进行正则匹配来去掉其他不相关的系统任务产生的日志的干扰。该步骤的核心为将时间特征相似的日志事件进行聚类,具体而言,包括以下步骤:

1.2.1)将时间特征相似的目标用户操作请求的日志事件进行聚类,具体的,先在固定的跨度为s分钟的时间窗[t(0),t(s-1)]内,针对诸如创建虚拟机的每类用户操作请求,在其对应的各类异常场景下,有间隔的重复该目标操作请求,获取各节点各组件日志,作为后续获取更加准确的与该目标操作请求相关的日志事件集合的基础;

1.2.2)然后将步骤1.2.1)收集的目标用户操作请求的日志数据按照步骤1.1)的方式进行解析处理,并将处理得到的三元组序列tlog转化为描述日志事件特征的数据集其中,表示日志事件ei在时间戳时刻发生;

1.2.3)基于步骤1.2.2)得到的数据集,为每个日志事件在该时间窗内的每分钟计算一个发生值来描述该日志事件在该分钟内的发生情况,从而将描述日志事件特征的数据集devents转化为数据表tevents;

本发明中,数据表用tevents={(ti,0,ti,1,...,ti,s-1)|1≤i≤p}表示,数据表中每个元组表示相应的数据集devents中的日志事件,每列表示时间窗[t(0),t(s-1)]内的每分钟,ti,j代表日志事件ei在t(j)分钟上的发生值。其中,ti,j取的是日志事件ei在t(j)分钟前后的综合邻近值,在每分钟只计算一次,其默认值为-1,举例来说,事件e1在t(x-1)分钟15秒被记录,则t1,x-1为(1-15/60=)0.75,t1,x为(15/60=)0.25,事件e1在t(x)分钟20秒再次被记录,则t1,x仍然为0.25,同时t1,x+1为(20/60=)0.3。

1.2.4)基于数据表tevents进行聚类,将在时间上发生模式类似的日志事件聚为一类,从这些类中挑选出与目标用户操作请求相关的日志事件类,即得到与各类用户操作请求相关的关键日志事件集;

1.2.5)重复步骤1.2.1)~1.2.4),得到与各类用户操作相关的关键日志事件集。

上述步骤1.3)中,由于云操作系统是以并行的方式处理并发的云用户请求,也就是说针对同一类操作,不同云用户请求处理对应的日志相互交错,因此本发明采取多标识符关联的方式从同类操作处理产生的日志事件集中分离不同的云用户请求,具体来说:以资源标识符为核心,将与该资源标识符相关的所有请求标识符均作为还原特定用户操作请求对应的日志事件序列的关联标识符,其中资源标识符与请求标识符相关指的是这两者出现在同一条日志消息中,即出现在步骤1.1)中得到的三元组序列tlog的同一个元素中。利用这些标识符可以将特定用户操作请求处理产生的关键日志事件关联起来,从而得到相关的日志事件序列,该序列代表用户操作请求处理对应的整个云操作系统程序控制流执行流,描述其相关的系统行为。

进一步,所述步骤1.4)中,基于步骤1.3)得到的整体日志事件序列集,按照异常场景,为每个整体日志事件序列打上标签,构造训练数据,并以每类用户操作请求为单位训练识别模型,得到不同原因引发的云服务异常所对应的云操作系统的一般行为模式的方法,包括以下步骤:

1.4.1)结合故障注入及场景重现,大量并发的执行每一类用户操作,还原对应的各类异常场景,得到各历史异常场景所对应的各节点各组件日志;

1.4.2)根据实际异常场景为所还原的日志事件序列打标签,以每一类用户操作为单位,构建得到训练集,其中每个样本对应一个日志事件序列,描述相关的系统程序执行行为,每个样本对应的标签描述该日志事件序列对应的异常场景以及相关包括如何修复该类异常的描述信息;

1.4.3)利用自然语言处理工具doc2vec对日志事件序列进行向量化处理,将日志事件序列中的每个日志事件当做一个单词,该序列当做一个文档,将训练集中所有的日志事件序列作为输入,通过doc2vec处理后,将日志事件序列映射到计量空间,从而将训练集中的每个日志事件序列转化为固定维度的向量;

1.4.4)采用一对多策略的logistic回归学习算法,建立转化后的向量与标签之间的关系,从而建立日志事件序列与标签之间的关系,并将识别模型保存起来。

进一步,所述步骤2)中,利用构建的知识库识别云操作系统新产生的跨组件日志所对应的整体相关系统任务执行模式,达到细粒度云服务异常自动溯源的目的的方法,包括以下步骤:

2.1)如果提供了时间段,则先利用时间段,保留该时间段内的原始日志作为数据源,再利用目标用户操作对应的关键日志事件集,去掉其他无关日志的干扰;

2.2)利用步骤1.3)的方法分离还原不同的用户操作请求相关的日志事件序列;

2.3)利用训练得到的doc2vec模型将各个日志事件序列进行向量化处理后,根据logistic回归模型得到的分类结果得到最终每个日志事件序列为正常或者所属的异常类别。

实施例一

本实施例以openstack集成为例对本发明方法进行阐述说明。

1)如图1所示,构建知识库,具体实施步骤如下:

1.1)生成数据源。

在离线云计算环境中,利用云操作系统提供的命令行接口,撰写脚本,模拟大规模不同用户并发操作请求,基于云环境历史异常分析数据,结合故障注入技术及场景重现的方式,还原云服务异常的处理过程,最后将各服务器节点上openstack各节点各组件的日志集中收集起来作为构建训练数据的数据源。

进一步,每类操作请求的提交过程中:

1.1.1)先在固定时间窗顺序提交少量请求,以获取构建关键日志数据库所需数据源;

1.1.2)再提交大规模高并发的请求,以进一步获取大量的构建分类模型所需的数据源。

1.2)利用时间相关性分析,构建关键日志事件数据库。

基于步骤1.1.1)的日志数据源,通过日志解析将各类原始日志转化成统一结构化的日志事件,并利用日志事件之间的时间相关性分析,将出现模式类似的日志事件聚为一类,提取出与每类操作相关的日志事件集,保存下来,构成关键日志事件数据库,其中每类操作与多个日志事件相关联。

1.3)还原日志事件序列并打上标签。

基于步骤1.1.1)和1.1.2)的日志数据源,利用步骤1.2)的关键日志事件数据库,以每类用户操作为单位,先从日志中过滤出与该操作相关的日志事件,再利用多标识符关联的方法,将属于同一用户操作的日志事件关联起来,并按时间戳排序,得到每个用户操作请求实例相关的日志事件序列,最后按照该日志数据产生时操作请求相关的场景打上标签,可以包含与异常场景相关的修复信息。

1.4)事件序列向量化及训练,得到识别模型。

以步骤1.3)的输出作为数据集,以每类用户操作为单位,分别构造分类器,先利用自然语言处理工具doc2vec,以日志事件序列作为语料库,同时将这些序列转化为向量,然后,利用采用一对多策略的logistic回归学习算法,将这些向量以及对应的标签作为训练数据,训练得到分类器,最后把这些模型保存下来。

2)实际应用。

如图1和图2所示,在实际生产环境中,以云环境中各服务节点各服务组件产生的日志为数据源,结合所提供的操作类别作为输入,具体云服务问题诊断实施步骤如下:

2.1)还原日志事件序列。

与步骤1.3)中还原日志事件序列的过程类似,利用关键日志数据库和多标识符关联的方法,来解析日志、获取并还原与所提供的操作类别相关的所有日志事件序列;

2.2)识别并提供云服务异常诊断信息。

利用步骤1.4)中构建的学习模型,先将所还原的实际产生的日志事件序列转化为向量,然后利用分类器来识别每个所转化得到的向量,自动为其分类打上标签,从而得到每个日志事件序列相应的标签,作为诊断信息。

上述各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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