一种基于决策树的服务器故障自动检测系统及检测方法与流程

文档序号:16630094发布日期:2019-01-16 06:29阅读:351来源:国知局
一种基于决策树的服务器故障自动检测系统及检测方法与流程

本发明属于服务器管理技术领域,具体涉及一种基于决策树的服务器故障自动检测系统及检测方法。



背景技术:

随着服务器系统复杂程度越来越高,配套的软、硬件设计越来越复杂,相应的故障隐患也随之增加。当服务器系统出现故障时,如果未能及时进行故障诊断和针对性的维修,将会影响服务器正常运行,甚至会导致服务器宕机等严重后果。

现有的服务器故障诊断方法有:对比诊断法、故障树诊断法、模拟实验诊断法、专家系统诊断法、神经网络诊断法等。对比诊断法通过对多种服务器的多种信息进行数据采集和存储,这些信息包括电压、电流、指示灯、温度、波形和流量等。然后建立相应信息的数据库,同时作出趋势分析等图谱。将服务器正常运行状态的多种信息保存下来,当服务器发生故障时,把当前数据和正常运行状态的数据进行比对,再结合故障表现的信息特征,利用诊断知识,作出故障原因和故障状态的判定。但是该方法信息采集不充分,数据存储和处理对处理器的要求高,处理难度大;故障树分析法从服务器系统中最不希望发生的故障状态出发,按照一定的逻辑关系从总体到部件一层一层地进行逐级细化,推理分析故障形成的原因,最终确定故障发生的最初基本原因、影响程度和发生概率。故障树分析法可靠,并且可解释性强,但是该方法工作量大,分析过程采取排除法,针对性不强,会造成服务器故障诊断的效率低下;模拟试验诊断法是指假设服务器有很多故障,它表现的征兆与故障原因之间的关系是未知的或是不确定的,必须通过模拟试验,研究故障形成的机理和特征,解答产生这种故障的原因,提出表现这类故障的特征参数以及各种参数之间的定量关系等。模拟实验诊断法,不仅对模拟实验要求高,而且需要进行大量的定量计算,诊断成本高;专家系统诊断法是指人们根据长期的实践经验和大量的故障信息知识,设计出一种智能计算机程序系统,以解决复杂的难以用数学模型来精确描述的系统故障诊断问题。这种智能程序与传统的计算机应用程序有着本质上的不同。在专家系统中,求解问题的知识已不再隐含在程序和数据结构中,而是单独构成一个知识库。每个知识单元描述一个比较具体的情况,以及在该情况下应采取的措施。专家系统总体上提供了一种推理机制,根据不同的处理对象,从知识库中选取不同的知识元构成不同的求解序列,或者说生成不同的应用程序,以完成某一指定任务。通常专家系统由五个部分组成:知识库、推理机、数据库、解释程序以及知识获取程序。专家系统诊断法对的实践经验积累要求比较高,过分依赖该领域的经验积累,具有一定的局限性。以上这四种方法是传统的故障诊断方法。随着模式识别和数据挖掘技术的迅速发展,服务器故障诊断技术也结合这些新技术而发展。神经网络诊断法是建立在人工神经网络模型基础上,人工神经网络是在现代神经生理学和心理学的研究基础上,模仿人的大脑神经元结构特性而建立的一种非线性动力学网络系统,它由大量的简单的非线性处理单元高度并联、互联而成。利用计算机仿真,并行处理信息,具有对人脑某些基本特性的简单的数学模拟能力。人工神经网络在故障诊断领域的应用主要集中在三个方面:一是从模式识别角度应用神经网络作为分类器进行故障诊断;二是从预测角度应用神经网络作为动态预测模型进行故障预测;三是从知识角度建立基于神经网络的诊断专家系统。神经网络虽然提高了服务器故障诊断的效率和准确性,但是神经网络诊断法不可解释,无法从发生问题的根源对故障现象进行解释和分析。

综上所示,首先,现有的故障诊断方法存在信息来源不充分的问题,借助于万用表、示波器等手段,过分依赖于诊断人员的经验素质,具有一定的盲目性和局限性;其次,故障诊断过程没有充分利用故障数据流,诊断经验难以积累,诊断效率低,无法保证服务器高效、可靠运行。此外,现有的故障诊断结果存在不确定性和可解释性差等问题,不能保证故障从根源消除,使得服务器运行存在质量风险。如何快速、准确地诊断出服务器故障原因,是本领域技术人员亟待解决的技术问题之一。



技术实现要素:

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于决策树的服务器故障自动检测系统及检测方法,能够快速、准确、可靠地定位服务器故障。

本发明采用以下技术方案:

一种基于决策树的服务器故障自动检测系统,包括数据预处理模块、决策树训练和测试模块、自诊断决策树更新模型模块和图形界面模块;

数据预处理模块包括获取历史故障集子模块、新故障特征向量子模块和更新历史故障数据集子模块,获取历史故障集子模块和新故障特征向量子模块均调用ipmi管理单元的系统事件日志,经解析获得服务器当前运行状态信息,得到历史故障特征向量与新故障集特征向量,历史故障子模块从ipmi管理单元得到的历史特征向量结合专家系统,得到历史故障集;更新历史故障集子模块将新故障实例通过调用添加实例函数,追加到历史故障集中;

决策树训练和测试模块包括自诊断决策树训练子模块和自诊断决策树测试子模块,自诊断决策树训练子模块通过java实现c4.5决策树算法实现类,在历史故障集子模块上调用buildclassifier函数,生成自诊断故障决策树模型;

自诊断决策树测试子模块在新故障特征向量子模块生成的测试集上调用已经训练生成的自诊断决策树模型,生成新故障的故障原因和处理方法;

自诊断决策树更新模型模块通过数据预处理模块得到更新后的历史故障数据集和自诊断决策树训练子模块生成新的自诊断决策树模型;

图形界面包括数据预处理界面设计,生成新故障数据集界面设计,生成故障原因及处理方法界面,以及通知用户界面设计,便于用户操作使用。

更进一步的,本发明的特点还在于:获取历史故障集子模块通过ipmi管理单元得到服务器运行状态数据,结合专家系统,采用weka生成文件格式为arff的历史故障数据集;

获取新故障集子模块通过ipmi管理单元生成,采用weka软件调用生成特征向量函数生成文件格式为新故障特征向量。

本发明的另一技术方案是,一种基于决策树的服务器故障自动检测方法,利用如权利要求1和2所述基于决策树的服务器故障自动检测系统,专家系统和ipmi管理单元结合生成历史数据集;通过ipmi管理单元获得故障时服务器运行状态数据作为异常数据流,根据异常数据流提取新故障特征向量,将新特征向量与故障原因关系对组成故障数据集,并将其训练成自诊断决策树模型;当服务器运行过程中发生故障时,提取对应的故障特征向量,由自诊断决策树模型自动判断故障类型、原因和处理方法,在故障清除后,再将故障特征向量和故障原因关系对加入历史故障集完成更新,并更新自诊断故障树模型。

更进一步的,本发明的特点还在于:包括以下步骤:

s1、建立自诊断决策树模型;

s2、提取新故障特征向量;

s3、按照步骤s1生成的自诊断决策树对步骤s2生成的新故障特征向量进行分类,得到新故障的故障原因和处理方法,获取新故障实例;

s4、将步骤s3得到的新故障实例,按照自诊断决策树生成的故障原因和处理方法进行处理,如果措施有效,将该故障添加到历史故障集中,并重新调用步骤s1生成新的自诊断决策树模型;如果措施无效,经其他手段诊断后,得到故障原因和处理方式,也添加到历史故障集中,并重新调用步骤s1生成新的自诊断决策树模型。

其中,步骤s1中,历史故障集通过专家系统和ipmi管理单元获得,对现有的故障状态和故障原因及处理方法进行整理,采用wake生成格式为arff文件的历史故障集;

通过训练集的学习,构建自顶向下的决策树;然后对新的实例按照训练阶段建立的决策树进行分类,得到新的实例的类别。

具体的,假设给定历史故障集d含有m个类别,即m种服务器故障原因,m个不同类ci(i=1,2,3,...,m),该数据集的属性集为a,构建决策树的步骤如下:

s101、计算历史故障集集d的信息熵;

s102、计算历史故障集d所有属性的信息熵,假设按照属性a划分d中元组,且属性a将d划分成v个不同的子集,计算得到属性a的信息熵;

s103、计算属性a的信息增益率;

s104、按照前三步计算所有属性的信息增益率,把信息增益率最大的属性作为分支节点,节点的每个可能取值对应一个子集,对样本子集递归地执行步骤s102和s103,直至生成自诊断决策树。

其中,步骤s101中,历史故障集集d的信息熵计算如下:

其中,pi表示样本中ci类别的样本所占比例。

其中,步骤s102中,属性a的信息熵计算如下:

其中,entropy(d)a表示属性a的信息熵;dj表示训练集中属性a的值为j的子集。

其中,步骤s103中,信息增益率的计算公式如下:

其中,entropy(d)a表示属性a的信息熵;dj表示训练集中属性a的值为j的子集。

其中,步骤s2具体为:经ipmi管理单元网页调用系统事件日志,解析服务器故障时服务器运行状态数据,获取故障时,服务器各节点的运行状态数据包括节点类型、电流、电压、温度、电源输出功率、网络状态、串口状态等,调用生成数据集函数,生成新故障数据集,提取新故障特征向量。

与现有技术相比,本发明至少具有以下有益效果:

本发明一种基于决策树的服务器故障自动检测系统,系统包括数据预处理模块、决策树训练和测试模块、自诊断决策树更新模型模块和图形界面模块;服务器故障自动检测系统采用模块化设计思想,将该系统分为四个模块,便于开发人员分工协作,提高开发效率,增强程序的可读性、可维护性与可复用性,同时,采用mvc设计模式,将模型与视图分离,即就是将故障自动检测逻辑实现与界面显示分离,便于提高系统的灵活性与可复用性,降低模型与视图之间的耦合性,从而提高程序可靠性与稳定性。

进一步的,获取历史故障集子模块的目的是为自诊断决策树模型提供数据支持,历史故障集作为自诊断决策树的输入,经过决策树模型进行学习,得到服务器故障自诊断决策树模型。该过程是提取服务器故障时运行状态信息中有效信息,采用数据挖掘的提取数据特征向量的方法从看似无关联的运行状态信息中提取有效的信息,同时,结合历史故障情况与专家系统,生成历史故障子集,为自诊断决策树模型提供有效、可靠、高质量的数据输入。获取新故障特征向量是提取ipmi管理单元中多种运行状态信息中有效的运行特征数据,该模块的目的是为获得新故障原因提供数据输入,将该特征向量作为自诊断决策树模型的训练数据输入,经已训练集得到的故障自诊断决策树模型进行学习,可得到该新故障的故障类型与原因。

本发明还公开了一种基于决策树的服务器故障自动检测方法,能从复杂服务器系统繁杂、海量维度的数据中挖掘内在规律,在保证足够多的历史故障集的基础上,该方法能够快速、准确、可靠地定位服务器故障;生成的规则易于分析服务器故障发生的原因、可解释性强;诊断算法本身能够自学习,自适应,随着历史故障集的增加,诊断结果将更加准确,可靠;本方法有利于提高服务器故障定位和维护效率,提高服务器运行的稳定性;不仅能应用在服务器管理领域,而且能推广到其他产品的故障诊断过程中。

进一步的,自诊断决策树模型建立是利用历史服务器故障数据,结合专家系统,生成决策树模型的数据基础。将新故障集添加到历史故障集,并更新自诊断决策树模型的优势在于充分利用已有的故障数据特征与故障类型,故障类型与形成原因越丰富,历史数据集数量越大,自诊断决策树模型的分类精度越高,故障定位越准确。

进一步的,建立自诊断决策树本发明的重点,将历史故障集作为自诊断决策树模型的输入,可得到服务器故障的自诊断模型,为后续新的故障特征向量,提供故障类型分类的依据和生成规则。

进一步的,构建决策树的目的是利用数据挖掘算法建立故障特征向量与故障类型之间的关联关系,同时,根据c4.5算法生成故障类型出现故障原因的生成规则,为后续进行新故障分类提供分类依据。

进一步的,提取新故障特征向量的目的是为自诊断决策树模型提供测试集,也就是根据历史故障集训练得到的自诊断决策树模型提供数据输入,是生成新故障类型的数据基础。

综上所述,本发明能从复杂服务器系统繁杂、海量维度的数据中挖掘内在规律,在积累足够多的故障集,该方法能够快速、准确、可靠性的定位服务器故障,并且能可视化的呈现给用户,采用决策树模型,生成的规则易于分析故障发生的原因,可解释性强,采用自动诊断并且通知用户,能提高服务器故障定位和维护效率,提供服务器的运行稳定性和可靠性,不仅能应用在服务器管理领域,而且能推广到其他产品的故障诊断过程中。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为系统结构框图;

图2为决策树进行故障分类示意图。

具体实施方式

本发明公开一种基于决策树的服务器故障自动检测方法,结合专家系统和ipmi(intelligentplatformmanagementinterface)管理单元结合生成历史数据集;通过ipmi管理单元获得故障时服务器运行状态数据,即异常数据流,根据异常数据流提取新故障特征向量,将新特征向量与故障原因关系对组成故障数据集,并将其训练成自诊断决策树模型;当服务器运行过程中发生故障时,提取对应的故障特征向量,由自诊断决策树模型自动判断故障类型、原因和处理方法并通知技术人员,在故障清除后,再将该故障特征向量和故障原因关系对加入历史故障集完成更新,并更新自诊断故障树模型,因而随着历史故障集的不断完善,故障诊断系统将会更加准确、可靠。

包括数据预处理模块、决策树训练和测试模块、自诊断决策树更新模型模块和图形界面模块。

数据预处理模块包括获取历史故障集、新故障特征向量和更新历史故障数据集三个子模块。

获取历史故障集子模块和新故障特征向量子模块均需要调用ipmi管理单元系统事件日志,经解析获得的服务器当前运行状态信息,得到数据集特征向量。

获取历史故障集通过ipmi管理单元得到的服务器运行状态数据,结合专家系统,采用weka软件生成文件格式为arff的历史故障数据集;

新故障特征向量子模块通过ipmi管理单元生成,采用weka软件调用生成特征向量函数生成文件格式为新故障特征向量;

更新历史故障集将新故障特征向量作为测试集,采用已经建立完成的自诊断决策树模型,对测试集进行分类,得到新故障实例,将该新故障实例通过调用添加实例函数,追加到历史故障集中。

决策树训练和测试模块包括自诊断决策树的训练和自诊断决策树的测试两个子模块。

自诊断决策树训练子模块通过java实现c4.5决策树算法实现类,在历史故障集上调用该类的buildclassifier(instancesinstances)函数,生成自诊断故障决策树模型;

自诊断决策树测试子模块在新故障特征向量生成的测试集上调用已经训练生成的自诊断决策树模型,生成新故障的故障原因和处理方法。

自诊断决策树更新模型模块通过数据预处理模块中子模块得到更新后的历史故障数据集和自诊断决策树训练子模块生成新的自诊断决策树模型。

图形界面模块主要实现了服务器故障诊断自动化的过程,方便用户使用基于决策树的故障自动诊断软件,图形界面包括数据预处理界面设计,生成新故障数据集界面设计,生成故障原因及处理方法界面,以及通知用户界面设计。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

根据本发明的内容,设计详细实现方案,实现结构图如图1所示,专家系统为传统的故障现象和故障原因及处理方式知识经验积累,结合专家系统和ipmi管理单元,调用生成数据集函数,生成历史故障集,历史故障集由多个故障特征向量、故障原因及处理方法关系对组成,可表示为a(a0,a1,...,an,class)实例项,利用决策树中的c4.5算法建立历史数据集与故障原因及处理方法之间的关系,生成自诊断决策树模型,当出现新的故障时,通过ipmi管理单元,提取新故障特征向量,使用已经建立的自诊断决策树模型,对新故障进行分类,即可生成新故障实例,经硬件验证如果处理措施有效,即可将该实例添加到历史故障集,生成新的自诊断决策树模型。

本发明实现包括四个部分:建立自诊断决策树模型、提取新故障特征向量、获取新故障实例、更新自诊断决策树模型;具体实现方式如下:

s1、建立自诊断决策树模型

建立自诊断决策树模型包括两个步骤:获取历史数据集和建立决策树模型。

首先,历史故障集通过专家系统和ipmi软件获得,对现有的故障状态和故障原因及处理方法进行整理,采用wake软件生成格式为arff文件的历史故障集。

其次,本发明采用决策树算法,该算法的基本思路是:

首先通过训练集的学习,构建自顶向下的决策树;然后对新的实例按照训练阶段建立的决策树进行分类,得到新的实例的类别。下面以c4.5决策树为例说明决策树的构建过程。

假设给定历史故障集d含有m个类别,即m种服务器故障原因,m个不同类ci(i=1,2,3,...,m),该数据集的属性集为a,其中构建c4.5决策树的步骤如下:

s101、计算历史故障集集d的信息熵

式中:pi表示样本中ci类别的样本所占比例

s102、计算历史故障集d所有属性的信息熵。假设按照属性a划分d中元组,且属性a将d划分成v个不同的子集,依据公式2可以得到属性a的信息熵:

式中:entropy(d)a表示属性a的信息熵;dj表示训练集中属性a的值为j的子集。

s103、计算属性a的信息增益率。信息增益率的计算公式如下:

s104、按照前三步计算所有属性的信息增益率,把信息增益率最大的属性作为分支节点,节点的每个可能取值对应一个子集,对样本子集递归地执行步骤s102和s103,直至生成自诊断决策树。

s2、提取新故障特征向量

经ipmi管理单元网页调用系统事件日志,解析服务器故障时服务器运行状态数据,获取故障时,服务器各节点的运行状态数据包括节点类型、电流、电压、温度、电源输出功率、网络状态、串口状态等,调用生成数据集函数,生成新故障数据集。

s3、获取新故障实例

按照步骤s1生成的自诊断决策树对步骤s2生成的新故障特征向量进行分类,即可得到新故障的故障原因和处理方法。

s4、更新自诊断决策树模型

步骤s3得到的新故障实例,按照自诊断决策树生成的故障原因和处理方法进行处理,如果措施有效,将该故障添加到历史故障集中,并重新调用步骤s1生成新的自诊断决策树模型;如果措施无效,经其他手段诊断后,得到故障原因和处理方式,也添加到历史故障集中,并重新调用步骤s1生成新的自诊断决策树模型。

请参阅图2,当ipmi管理软件出现报警刀片无法访问刀片a的网络,在训练集上建立自诊断决策树模型,得到决策树,按照决策树建立算法,可进行分类的特征向量为刀片a系统崩溃或刀片网络故障,在刀片a系统崩溃情况下,可能存在a1与a2的分支特征,按照决策树算法依次进行计算,可能造成刀片a系统崩溃的原因有c1、c2、c3。类似的,如果刀片a没有系统崩溃的特征,则走右侧分支,可能造成网络故障的原因有c4、c5、c6。举例如下:无法访问刀片a网络---刀片网络故障---a3---a32---a321---c5,如果是c5引起刀片a无法访问网络,可得到上述定位规则。

根据上述方案,用java语言对基于决策树的服务器故障自动检测方法进行编写,编译,并完成调试,测试结果表明本发明具有很好的可实施性,性能满足预期,并且随着历史故障集的增加,故障诊断精确性随之提高。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

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