发明内容
本申请提供一种基于状态机故障定位方法以及装置,能够在操作步骤级别实现对故障的定位,提高故障的定位的精确度。
本申请第一方面提供一种基于状态机故障定位方法,其特征在于,包括:获取出现故障的操作流程的分析信息,其中,所述分析信息包括日志,所述日志为所述出现故障的操作流程在执行操作步骤时产生;根据所述日志中的特殊字符获取与所述日志的特殊字符匹配的状态机模板;将所述分析信息以及所述状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图;根据所述日志中的错误日志在所述操作步骤顺序图中找到出现故障的操作步骤。
结合第一方面,在第一方面的第一种可能的实施方式中,在获取出现故障的操作流程的分析信息之前还包括:从被分析系统中获取多个操作流程的分析信息;根据所述多个操作流程的分析信息中的错误日志获得发生故障的操作流程的流程标识;根据发生故障的操作流程的流程标识从所述多个操作流程的分析信息中获取出现故障的操作流程的分析信息。
结合第一方面或第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,如果所述出现故障的操作流程包括子流程,则根据所述子流程中的日志的特殊字符获取与所述子流程中的日志的特殊字符匹配的状态机模板。
结合第一方面或第一方面的第一种或第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述状态机模板包括操作流程中执行操作步骤时状态跳转的源状态、状态跳转的目标状态、状态跳转的匹配特征以及子流程标识。
结合第一方面或第一方面的第一种或第二种或第三种可能的实施方式,在第一方面的第四种可能的实施方式中,所述分析信息还包括系统消息、系统内存的使用状况以及处理器的使用状况。
本申请第二方面提供一种基于状态机故障定位装置,其特征在于,包括:信息获取模块、模板获取模块、匹配模块以及故障发现模块,所述信息获取模块用于获取出现故障的操作流程的分析信息,其中,所述分析信息包括日志,所述日志为所述出现故障的操作流程在执行操作步骤时产生;所述模板获取模块用于根据所述日志中的特殊字符获取与所述日志的特殊字符匹配的状态机模板;所述匹配模块用于将所述分析信息以及所述状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图;所述故障发现模块用于根据所述日志中的错误日志在所述操作步骤顺序图中找到出现故障的操作步骤。
结合第二方面,在第二方面的第一种可能的实施方式中,所述装置还包括:标识获取模块以及过滤模块,所述信息获取模块用于从被分析系统中获取多个操作流程的分析信息;所述标识获取模块用于根据所述多个操作流程的分析信息中的错误日志获得发生故障的操作流程的流程标识;所述过滤模块用于根据发生故障的操作流程的流程标识从所述多个操作流程的分析信息中获取出现故障的操作流程的分析信息。
结合第二方面或第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述模板获取模块用于在所述出现故障的操作流程包括子流程时,根据所述子流程中的日志的特殊字符获取与所述子流程中的日志的特殊字符匹配的状态机模板。
结合第二方面或第二方面的第一种或第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述状态机模板包括操作流程中执行操作步骤时状态跳转的源状态、状态跳转的目标状态、状态跳转的匹配特征以及子流程标识。
结合第二方面或第二方面的第一种或第二种或第三种可能的实施方式,在第二方面的第四种可能的实施方式中,所述分析信息还包括系统消息、系统内存的使用状况以及处理器的使用状况。
本申请获取出现故障的操作流程的分析信息,根据日志中的特殊字符获取与日志的特殊字符匹配的状态机模板,再将分析信息以及状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图,最后,根据日志在操作步骤顺序图中找到出现故障的操作步骤。与现有技术相比,通过上述方法能够获得出现故障的操作流程的操作步骤顺序图,并根据日志在操作步骤顺序图中定位出现故障的操作步骤,所以能够在操作步骤级别实现对故障的定位,提高故障的定位的精确度。
而且,在现有技术中,模块一般是封装起来的,所以用户没法获知模块内部更细节的状态,但是,通过本申请提供的方法,能够获知模块内部的操作步骤的情况。此外,本申请通过模式匹配的方式来获得状态机模板,所以,即使部分分析信息丢失,也依然能够找到状态机模板,不会因为部分信息丢失而影响故障定位。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施方式中也可以实现本申请。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
参阅图1,图1是本发明实施例提供的一种基于状态机的故障定位方法的流程图。本实施方式的基于状态机的故障定位方法包括:
110:从被分析系统中获取多个操作流程的分析信息。
被分析系统为软件系统,被分析系统在运行时产生多个操作流程,操作流程通过调用多个模块以完成一个具体的事务,其中,模块中封装了多个操作步骤。操作流程在调用模块时,会执行模块中封装的操作步骤。操作流程在执行模块中的操作步骤时会产生日志并存储在磁盘中,日志中记载了操作流程的流程标识以及在执行操作步骤时产生的一些信息等等。其中,每个日志中都具有特殊字符,例如,创建用户的操作步骤所产生的日志中会包含“usercreate”的特殊字符。如果操作流程执行操作步骤时发生错误,则会导致出现错误日志。
如果操作流程在执行时发生了错误,则需要对被分析系统进行分析,从而对故障进行定位。此时,从被分析系统中获取多个操作流程的分析信息,其中,分析信息包括日志、系统消息、系统内存的使用情况以及处理器的使用情况等等。系统内存的使用情况包括系统内存的已使用空间,系统内存的剩余空间等等。处理器的使用情况包括处理器的资源已使用多少,以及处理器的资源的剩余多少等等。可以理解的是,可以在发生故障时,一次获取多个操作流程的分析信息,也可以在未发生故障前,定时获取多个操作流程的分析信息,在发生故障时,再获取上一次定时之后产生的多个操作流程的分析信息。为了便于进行分析,可以将获取到的多个操作流程的分析信息集中进行存储。
120:根据多个操作流程的分析信息中的错误日志获得发生故障的操作流程的流程标识。
在获取多个操作流程的分析信息之后,从多个操作流程的分析信息中找到错误日志。根据错误日志中携带的操作流程标识可以获知发生故障的操作流程的流程标识。如果根据找到的错误日志获得的流程标识不止一个,可以对同一个流程标识的错误日志进行下面的处理。
130:根据发生故障的操作流程的流程标识从多个操作流程的分析信息中获取出现故障的操作流程的分析信息。
在获得发生故障的操作流程的流程标识之后,根据发生故障的操作流程的流程标识从多个操作流程的分析信息中过滤得到出现故障的操作流程的分析信息,以减少需要进行分析的分析信息的数量。
140:根据日志中的特殊字符获取与日志的特殊字符匹配的状态机模板。
在状态机引擎中存储了多个状态机模板,每种状态机模板用于表示一种操作流程。状态机模板包括所表示的操作流程在执行操作步骤时,状态跳转的源状态、状态跳转的目标状态、状态跳转的匹配特征以及子流程标识。例如,如图2所示,操作流程A在执行过程中的状态跳转包括:从状态1跳转到状态2,从状态2跳转到状态3以及从状态2跳转到状态1,其中,从状态2跳转到状态3时具有特征1,从状态2跳转到状态1时具有特征2。而且状态2具有子流程。在状态2的子流程中的状态跳转包括:从状态a跳转至状态b,从状态b跳转至状态d,从状态a跳转至状态c以及从状态c跳转至状态d,其中,从状态a跳转至状态b时具有特征3,从状态b跳转至状态d时具有特征5,从状态a跳转至状态c时具有特征4以及从状态c跳转至状态d时具有特征6。所以,操作流程A的状态机模板如表1所示,
表1操作流程A的状态机模板
对于状态2的子流程,可同样用上述的方式获得子流程的状态机模板。
在执行本实施例提供的基于状态机的故障定位方法之前,从状态机模板对应的操作流程在各个操作步骤中产生的日志提取特殊字符,例如,状态机模板b对应的操作流程包括创建用户和删除用户两个操作步骤,则分别从创建用户的操作步骤产生的日志提取“usercreate”的特殊字符和从删除用户的操作步骤产生的日志提取“userdelete”的特殊字符。在执行本步骤时,从出现故障的操作流程的每个日志中提取特殊字符,例如,出现故障的操作流程B的每个日志中提取到特殊字符“usercreate”以及“userdelete”。则经过匹配后,可以知道操作流程B对应的状态机模板为状态机模板b。
150:将分析信息以及状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图。
在本步骤中,将在步骤130中获得的发生故障的操作流程的分析信息以及在步骤140中获取得到的状态机模板进行模式匹配。例如,
首先加载状态机模板M,假设步骤140中获取得到的状态机模板为状态机模板M。其中,状态机模板M对应如图3所示的操作流程m。操作流程m在执行过程中的状态跳转包括:从状态1跳转到状态2,从状态2跳转到状态1,从状态2跳转到状态3,从状态3跳转到状态4,从状态4跳转到状态5,从状态3跳转到状态6,从状态6跳转到状态7,从状态7跳转到状态8,从状态5跳转到状态9,从状态7跳转到状态9,从状态9跳转到状态10。
在加载状态机模板M后,将获取到的发生故障的操作流程的分析信息与状态机模板M进行模式匹配。如图4所示,状态1跳转到状态2的步骤能够成功匹配,则标记为ok。状态2跳转到状态1的步骤不能够成功匹配,则不作任何标记。状态2跳转到状态3的步骤不能够成功匹配,则不作任何标记。状态3跳转到状态4的步骤能够成功匹配,则标记为ok。状态4跳转到状态5的步骤能够成功匹配,则标记为ok。状态6跳转到状态7的步骤能够成功匹配,则标记为ok。状态6跳转到状态8的步骤能够成功匹配,则标记为ok。状态5跳转到状态9的步骤不能够成功匹配,则不作任何标记。状态7跳转到状态9的步骤能够成功匹配,则标记为ok。状态9跳转到状态10的步骤能够成功匹配,则标记为ok。在标记成功后,可以得到如图4所示的出现故障的操作流程的操作步骤顺序图。
根据出现故障的操作流程的操作步骤顺序图可以知道,尽管获取到的出现故障的操作流程的状态2跳转到状态3,状态5跳转到状态9的分析信息丢失,但是,可以根据状态机模板M推测出状态2应该跳转到状态3,状态5应该跳转到状态9。所以,即使丢失部分分析信息,也不会影响到故障定位。
160:根据日志中的错误日志在操作步骤顺序图中找到出现故障的操作步骤。
错误日志可以是写进日志中的内容出现了错误的日志,记载了操作步骤出错的日志或者长时间不更新的日志等等。根据日志中的错误日志在操作步骤顺序图中找到出现故障的操作步骤。例如,错误日志是如图4中所示的状态4跳转到状态5时所产生的日志,则可以将故障定位到状态4跳转到状态5之间的操作步骤。
本申请获取出现故障的操作流程的分析信息,根据日志中的特殊字符获取与日志的特殊字符匹配的状态机模板,再将分析信息以及状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图,最后,根据日志在操作步骤顺序图中找到出现故障的操作步骤。与现有技术相比,通过上述方法能够获得出现故障的操作流程的操作步骤顺序图,并根据日志在操作步骤顺序图中定位出现故障的操作步骤,所以能够在操作步骤级别实现对故障的定位,提高故障的定位的精确度。
而且,在现有技术中,模块一般是封装起来的,所以用户没法获知模块内部更细节的状态,但是,通过本申请提供的方法,能够获知模块内部的操作步骤的情况。此外,本申请通过模式匹配的方式来获得状态机模板,所以,即使部分分析信息丢失,也依然能够找到状态机模板,不会因为部分信息丢失而影响故障定位。
参阅图5,图5是本发明实施例提供的一种基于状态机的故障定位装置。本实施例提供的基于状态机的故障定位装置200,包括:信息获取模块210、标识获取模块220、过滤模块230、模板获取模块240、匹配模块250以及故障发现模块260。
所述信息获取模块210用于获取出现故障的操作流程的分析信息,其中,所述分析信息包括日志,所述日志为所述出现故障的操作流程在执行操作步骤时产生。
所述模板获取模块240用于根据所述日志中的特殊字符获取与所述日志的特殊字符匹配的状态机模板。
所述匹配模块250用于将所述分析信息以及所述状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图。
所述故障发现模块260用于根据所述日志中的错误日志在所述操作步骤顺序图中找到出现故障的操作步骤。
可选地,所述信息获取模块210用于从被分析系统中获取多个操作流程的分析信息。
所述标识获取模块220用于根据所述多个操作流程的分析信息中的错误日志获得发生故障的操作流程的流程标识。
所述过滤模块230用于根据发生故障的操作流程的流程标识从所述多个操作流程的分析信息中获取出现故障的操作流程的分析信息。
可选地,所述模板获取模块240用于在所述出现故障的操作流程包括子流程时,根据所述子流程中的日志的特殊字符获取与所述子流程中的日志的特殊字符匹配的状态机模板。
可选地,所述状态机模板包括操作流程中执行操作步骤时状态跳转的源状态、状态跳转的目标状态、状态跳转的匹配特征以及子流程标识。
可选地,所述分析信息还包括系统消息、系统内存的使用状况以及处理器的使用状况。
参阅图6,图6是本发明提供的一种终端的结构示意图。本实施例提供的终端300包括:包括输入器301、处理器302、显示器303和存储器304。
存储器304可以包括只读存储器和随机存取存储器,并向处理器302提供指令和数据。存储器304的一部分还可以包括非易失性随机存取存储器(NVRAM)。
存储器304存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
在本发明实施例中,处理器302通过调用存储器304存储的操作指令(该操作指令可存储在操作系统中),执行如下操作:
获取出现故障的操作流程的分析信息,其中,所述分析信息包括日志,所述日志为所述出现故障的操作流程在执行操作步骤时产生;
根据所述日志中的特殊字符获取与所述日志的特殊字符匹配的状态机模板;
将所述分析信息以及所述状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图;
根据所述日志中的错误日志在所述操作步骤顺序图中找到出现故障的操作步骤。
本发明实施例中,控制器300获取出现故障的操作流程的分析信息,根据日志中的特殊字符获取与日志的特殊字符匹配的状态机模板,再将分析信息以及状态机模板进行模式匹配以获得出现故障的操作流程的操作步骤顺序图,最后,根据日志在操作步骤顺序图中找到出现故障的操作步骤。与现有技术相比,通过上述方法能够获得出现故障的操作流程的操作步骤顺序图,并根据日志在操作步骤顺序图中定位出现故障的操作步骤,所以能够在操作步骤级别实现对故障的定位,提高故障的定位的精确度。
处理器302控制终端300的操作,处理器302还可以称为CPU(CentralProcessingUnit,中央处理单元)。存储器304可以包括只读存储器和随机存取存储器,并向处理器302提供指令和数据。存储器304的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,终端300的各个组件通过总线系统305耦合在一起,其中总线系统305除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统305。
上述本发明实施例揭示的方法可以应用于处理器302中,或者由处理器302实现。处理器302可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器302中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器302可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器304,处理器302读取存储器304中的信息,结合其硬件完成上述方法的步骤。
可选地,在获取出现故障的操作流程的分析信息之前还包括:从被分析系统中获取多个操作流程的分析信息;根据所述多个操作流程的分析信息中的错误日志获得发生故障的操作流程的流程标识;根据发生故障的操作流程的流程标识从所述多个操作流程的分析信息中获取出现故障的操作流程的分析信息。
可选地,如果所述出现故障的操作流程包括子流程,则根据所述子流程中的日志的特殊字符获取与所述子流程中的日志的特殊字符匹配的状态机模板。
可选地,所述状态机模板包括操作流程中执行操作步骤时状态跳转的源状态、状态跳转的目标状态、状态跳转的匹配特征以及子流程标识。
可选地,所述分析信息还包括系统消息、系统内存的使用状况以及处理器的使用状况。
在现有技术中,模块一般是封装起来的,所以用户没法获知模块内部更细节的状态,但是,通过本申请提供的方法,能够获知模块内部的操作步骤的情况。此外,本申请通过模式匹配的方式来获得状态机模板,所以,即使部分分析信息丢失,也依然能够找到状态机模板,不会因为部分信息丢失而影响故障定位。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。