CN107301120B - 用于处理非结构化日志的方法及装置 - Google Patents

用于处理非结构化日志的方法及装置 Download PDF

Info

Publication number
CN107301120B
CN107301120B CN201710566687.9A CN201710566687A CN107301120B CN 107301120 B CN107301120 B CN 107301120B CN 201710566687 A CN201710566687 A CN 201710566687A CN 107301120 B CN107301120 B CN 107301120B
Authority
CN
China
Prior art keywords
fault
data
classification
message data
abnormal message
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.)
Active
Application number
CN201710566687.9A
Other languages
English (en)
Other versions
CN107301120A (zh
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710566687.9A priority Critical patent/CN107301120B/zh
Publication of CN107301120A publication Critical patent/CN107301120A/zh
Application granted granted Critical
Publication of CN107301120B publication Critical patent/CN107301120B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开一种用于处理非结构化日志的方法及装置。该方法包括:获取异常消息数据;通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数;通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据;以及根据所述分类数据对故障情况进行处理。本申请公开的用于处理非结构化日志的方法及装置,能够帮助开发人员大幅减少人工检查失败作业的数量,并自动初步分析故障原因,确保服务质量。

Description

用于处理非结构化日志的方法及装置
技术领域
本发明涉及计算机信息处理领域,具体而言,涉及一种用于处理非结构化日志的方法及装置。
背景技术
通常情况下,分布式系统软件开发人员开发程序时会打印日志消息来跟踪系统的运行状态,以帮助确定程序运行时可能出现的问题。人们经常使用分布式系统生成的系统日志进行故障排除和问题诊断。但是,在短时间内可能会有数千个失败的作业发生。由于分布式系统的规模和复杂性日益增加,人工逐一检查这些作业来检测异常是不可行的。
现有技术中,大多数系统产生并收集日志进行故障排除,开发人员和管理员通常通过人工检查系统打印的日志来检测异常情况。然而,随着许多大规模和复杂应用程序的部署,许多失败的作业可能会在短时间内发生,人工检测发生异常的原因变得非常困难和低效。首先,通过人工检查大规模分布式系统生成的大量日志消息来诊断异常是非常耗时的。其次,因为许多大型企业系统经常使用第三方组件,以至于单个开发人员或系统管理员可能没有足够的对于整个系统的认识。此外,分布式系统的复杂性日益增加,也进一步降低了人工问题诊断的效率。
由于许多失败的作业可能是由相同的原因造成的,因此对基于日志分析进而定位故障产生原因的技术有很大的需求,因此,需要一种新的用于处理非结构化日志的方法及装置。
在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本发明提供一种用于处理非结构化日志的方法及装置,能够帮助开发人员大幅减少人工检查失败作业的数量,并自动初步分析故障原因,确保服务质量。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一方面,提出一种用于处理非结构化日志的方法,该方法包括:获取异常消息数据;通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数;通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据;以及根据分类数据对故障情况进行处理。
在本公开的一种示例性实施例中,获取异常消息数据,包括:对原始的异常消息数据进行处理,以获得异常消息数据。
在本公开的一种示例性实施例中,对原始的异常消息数据进行处理,以获得异常消息数据,包括以下至少一者:去除原始的异常消息数据中的噪音消息,以获得异常消息数据;去除原始的异常消息数据中冗余的异常消息,以获得异常消息数据;以及将原始的异常消息数据中嵌套的异常消息替换为内层异常消息,以获得异常消息数据。
在本公开的一种示例性实施例中,通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数,包括:通过编辑距离将异常消息分类,生成故障来源分类数据;提取故障来源分类数据中每一个分类的最长公共子串;以及通过故障来源分类数据与最长公共子串提取故障参数。
在本公开的一种示例性实施例中,通过编辑距离将异常消息分类,生成故障来源分类数据,包括:获取每两个异常消息之间的编辑距离;确定阈值;以及根据阈值对异常消息数据进行分类,以生成故障来源分类数据。
在本公开的一种示例性实施例中,提取故障来源分类数据中每一个分类的最长公共子串,包括:通过最长公共子序列算法提取提取故障来源分类数据中每一个分类的最长公共子串。
在本公开的一种示例性实施例中,通过故障来源分类数据与最长公共子串提取故障参数,包括:通过故障来源分类数据中每一个分类中的数据与最长公共子串进行比较,以提取第一故障参数;通过第一故障参数与预设的参数模式进行比较,以获取故障参数。
在本公开的一种示例性实施例中,通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据,包括:通过故障参数确定每一个异常消息的作业签名;通过作业签名对异常消息数据进行标记分类,以获取第二数据;将第二数据进行统计处理以获取分类数据。
在本公开的一种示例性实施例中,根据分类数据对故障情况进行处理,包括以下情况至少一者:通过作业出现次数对故障情况进行处理;通过作业类别出现次数对故障情况进行处理;以及通过消息出现次数对故障情况进行处理。
在本公开的一种示例性实施例中,还包括:通过分类数据与预设数据对故障情况进行分析。
根据本发明的一方面,提出一种用于处理非结构化日志的装置,该装置包括:接收模块,用于获取异常消息数据;故障来源分类模块,用于通过日志签名对异常消息数据进行故障来源分类,以提取故障参数;标记分类模块,用于通过故障参数与作业签名对异常消息数据进行标记分类,以获取分类数据;以及评估模块,用于根据分类数据对故障情况进行处理。
在本公开的一种示例性实施例中,还包括:分析模块,用于通过分类数据与预设数据对故障情况进行分析。
根据本发明的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本发明的一方面,提出一种计算机可读介质,其上存储有计算机程序,其特征在于,程序被处理器执行时实现如上文中的方法。
根据本发明的用于处理非结构化日志的方法及装置,能够帮助开发人员大幅减少人工检查失败作业的数量,并自动初步分析故障原因,确保服务质量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种用于处理非结构化日志的方法的流程图。
图2A-2C是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的参数提取示例。
图3A-3C是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的参数提取示例。
图4A-4D是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的参数提取示例。
图5是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的参数提取示例。
图6是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的流程图。
图7是根据一示例性实施例示出的一种用于处理非结构化日志的装置的框图。
图8是根据一示例性实施例示出的一种电子设备的框图。
图9是根据一示例性实施例示出的一种计算机可读介质示意图。
具体实施例
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
下面结合附图对本公开示例实施方式进行详细说明。
图1是根据一示例性实施例示出的一种用于处理非结构化日志的方法的流程图。
如图1所示,在S102中,获取异常消息数据。大规模分布式系统正在成为IT行业的重要引擎。对于大型商业系统,执行异常(包括错误行为或意外的长时间响应时间)通常会导致用户不满或利益损失。这些异常可能是由分布式系统组件中的硬件问题,网络通信拥塞或软件错误引起的。在发生失败的作业时,其对应的日志文件总是包含一些异常消息,这可能部分地解释了异常的原因。在本申请中,将这些异常消息称为TRAP消息。本申请中的异常消息包括大型分布式系统产生的异常消息。日志文件中包含有TRAP消息,而且,在每个日志消息都具有指示其生成时间的对应时间戳。操作系统会使用线程ID或请求ID对日志进行重新编码,以区分不同线程或工作流的日志。大多数现代操作系统(如Windows和Linux)和平台都提供了线程ID。因此,可以使用顺序日志来提取异常消息。此外,每个日志条目都包含作业ID属性,它记录日志条目属于哪个作业。
在S104中,通过日志签名对异常消息数据进行故障来源分类,以提取故障参数。虽然失败的作业日志中可能存在大量的异常消息,但是这些异常消息中有很多是由相同的源代码语句打印出来。在本实施例中认为同一条源代码语句打印出来的消息是同一个类别的。可例如将异常消息分类到不同的类别中,这些类别可例如能够说明故障的来源,通过这些分类可以进一步提取每个异常消息的故障参数。这些故障参数通常会指出错误的对象,错误对象可能是网站、服务器ID等。
在S106中,通过故障参数与作业签名对异常消息数据进行标记分类,以获取分类数据。每个失败的作业日志文件都可能包含一些异常消息。所有失败的作业日志文件中的所有异常消息都按照上述异常消息分类方法进行分类。如果某个作业日志文件与另一个文件包含相同的异常消息类别,则两个作业日志文件具有相同的作业类别。在本申请中,将每个作业的异常消息类别集合称为“作业签名”。通过上文中的故障参数与作业签名继续对异常消息进行分类,本次分类可例如,通过故障参数对异常消息进行标记。可例如,不同的故障原因对应着不同的故障参数,将不同的故障参数分别设定标识,通过标识为异常消息进行标记分类,以获取分类数据。
在S108中,根据分类数据对故障情况进行处理。可例如,根据分类数据,统计不同的故障来源的数量以及不同的故障情况的数量,可例如,根据预先设定的优先级,分别处理不同的故障。还可例如,根据数量的多少,依次处理故障,还可例如,根据故障带来的影响大小,进行故障处理,本发明不以此为限。
根据本发明的用于处理非结构化日志的方法,通过将异常消息进行故障分类提取故障参数,进而通过故障参数对异常消息进行标记分类的方式,能够帮助开发人员大幅减少人工检查失败作业的数量,并初步定位故障原因,确保服务质量。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。
在本公开的一种示例性实施例中,获取异常消息数据,包括:对原始的异常消息数据进行处理,以获得异常消息数据。在本公开的一种示例性实施例中,对原始的异常消息数据进行处理,以获得异常消息数据,包括以下至少一者:去除原始的异常消息数据中的噪音消息,以获得异常消息数据;去除原始的异常消息数据中冗余的异常消息,以获得异常消息数据;以及将原始的异常消息数据中嵌套的异常消息替换为内层异常消息,以获得异常消息数据。
去除原始的异常消息数据中的噪音消息,以获得异常消息数据可例如通过以下方式:
作业的日志文件可能包含一些实际上不应属于该作业的噪音消息。这是因为在分布式系统中,许多作业同时运行,如果任何日志条目没有记录正确的作业ID,则系统可能会将其写入到实际上是另一个作业的日志文件中。可例如如表1所示:
ProcessId ThreadId JobId Messaee MachineName
6496 25 10551060 Execute job for execution. GFE01216-008
7860 4 -1 The job has been ready. CCA03205-003
6496 25 10551060 Updating build version. GFE01216-008
6496 25 -1 TRAP:...... GFE01216-008
7860 4 -1 TRAP:...... CCA03205-003
上表是日志文件“10551060.log”的日志条目的一部分。在这些属性中,“ProcessId”,“ThreadId”和“MachineName”共同区分不同的工作流。在上面的示例中,有两个不同的线程:“6495,25,GFE01216-008”和“7860,4,CCA03205-003”。噪音消息删除规则可例如为:如果某个工作流的日志条目没有包含与作业名称相同正确作业ID,那么将该线程的消息视为有噪声的消息。在上面的示例中,“7860,4,CCA03205-003”工作流程的所有JobIds为-1,那么我们将“7860,4,CCA03205-003”工作流的消息视为噪声消息,并将其删除。处理完毕后,剩下的日志条目如表2所示:
ProcessId ThreadId JobId Message MachineName
6496 25 10551060 Execute job for execution. GFE01216-008
6496 25 10551060 Updating build version. GFE01216-008
6496 25 -1 TRAP:...... GFE01216-008
去除原始的异常消息数据中冗余的异常消息,以获得异常消息数据可例如通过以下方式:
删除噪音消息后,需要删除日志文件的冗余TRAP消息。例如,在删除有噪声的消息后,日志文件具有以下TRAP消息:
a.TRAP:Retry exception:[MACHINE:CCA23510-009:TRAP:Exception[GridRetryException:Failed to adjust UPA UserRights permissions.TRAP_DETAILS:ErrorFile[C:\Grid\SharePoint_Common\GridSiteCollection.psl],ErrorLine[1495:throw$errorRecord].TRAP_ACTION:Rethrow.].TRAP_ACTION:Job 1024232will retry.
b.TRAP:Exception[GridRetryException:Failed to adjust UPA UserRightspermissions.TRAP_DETAILS:ErrorFile[C:\Grid\SharePoint_Common\GridSiteCollection.ps1],ErrorLine[1495:throw$errorRecord].TRAP_ACTION:Rethrow.
从中可以发现更长的TRAP消息a恰好包含较短的TRAP消息b。可例如将较短的TRAP消息b作为该作业的根异常,并将较长的TRAP消息视为冗余TRAP消息。冗余TRAP消息删除规则可例如为,如果记录为“Trap1”的某个TRAP消息包含长度短于“Trap1”长度的该日志文件的任何一个TRAP消息,那么可例如将“Trap1”视为冗余的TRAP消息,需要从日志文件中删除“Trap1”。删除多余的TRAP消息后,上面的示例包含剩余的TRAP为:
TRAP:Exception[GridRetryException:Failedto adjust UPA UserRightspermissions.TRAP_DETAILS:ErrorFile[C:\Grid\SharePoint_Common\GridSiteCollection.ps1],ErrorLine[1495:throw$errorRecord].TRAP_ACTION:Rethrow.
将原始的异常消息数据中嵌套的异常消息替换为内层异常消息,以获得异常消息数据可例如通过以下方式:
删除日志文件的冗余TRAP消息后,如果仍然存在嵌套的TRAP消息,则需要将其替换为内层TRAP消息。例如,删除冗余消息后,日志文件包含以下TRAP消息:
TRAP:Retry exception:[MACHINE:CCA23510-009:TRAP:Exception[GridRetryException:Failed to adjust UPA UserRights permissions.TRAP_DETAILS:ErrorFile[C:\Grid\SharePoint_Common\GridSiteCollection.ps1],ErrorLine[1495:throw$errorRecord].TRAP_ACTION:Rethrow.].TRAP_ACTION:Job 1024232will retry.
从中可以发现该TRAP消息是一个嵌套的消息。可例如认为内层TRAP是该TRAP的根本原因,并用其内层TRAP替换TRAP。因此,这个过程的规则可例如为,如果一个TRAP消息是一个嵌套的消息,我们用其内层TRAP替换。在使用内层TRAP替换嵌套的TRAP之后,上面的示例包含剩余的TRAP为:
TRAP:Exception[GridRetryException:Failed to adjust UPA UserRightspermissions.TRAP_DETAILS:ErrorFile[C:\Grid\SharePoint_Common\GridSiteCollection.ps1],ErrorLine[1495:throw$errorRecord].TRAP_ACTION:Rethrow.
根据本发明的用于处理非结构化日志的方法,通过将原始的异常消息进行去除噪声消息、去除冗余消息以及去除嵌套消息等操作,能够在后续异常消息处理时,提升处理效率,节约处理时间。
在本公开的一种示例性实施例中,通过日志签名对异常消息数据进行故障来源分类,以提取故障参数,包括:通过编辑距离将异常消息分类,生成故障来源分类数据;提取故障来源分类数据中每一个分类的最长公共子串;以及通过故障来源分类数据与最长公共子串提取故障参数。
在本公开的一种示例性实施例中,通过编辑距离将异常消息分类,生成故障来源分类数据,包括:获取每两个异常消息之间的编辑距离;确定阈值;以及根据阈值对异常消息数据进行分类,以生成故障来源分类数据。可例如通过如下方式:
a.计算每个两个TRAP消息的编辑距离
给定两个字符串,它们之间的编辑距离是从一个字符串转换为另一个字符串所需编辑操作的最小数量。最常见的允许的编辑操作是:(i)将字符插入到字符串中;(ii)从字符串中删除字符,(iii)用另一个字符替换字符串的字符。在本实施例中将一个异常消息的词作为一个字符来计算编辑距离。例如,字符串“I am David”和“I am John”的编辑距离是1,而不是5。把一个词作为编辑距离的单位,因为用这种方式计算的编辑距离可以更好地反映两个异常消息的相似度。通过上述处理,可以获得每两个TRAP消息的编辑距离。
b.分析这些编辑距离并设置阈值
设置编辑距离的阈值,以判断任何两个TRAP消息是否属于同一类别。首先对这些编辑距离进行分类,可例如通过人工观察设置编辑距离的阈值。如果观察到较高的编辑距离和较低编辑距离之间存在很大差距,可例如将它们之间的值设置为阈值。
c.根据阈值对TRAP消息进行分类
如果两个TRAP消息的编辑距离低于上一步设置的阈值,那么可例如将这两个TRAP消息认为是属于同一类的,基于此可以将TRAP消息分类到不同的类别。
各个文件之间的编辑距离可例如如表3所示,
A B C D
A 0
B 1 0
C 13 15 0
D 15 16 2 0
对编辑距离进行排序:1,2,13,15,15,16。可以发现,较高的值和较低的值之间存在很大的差距,因此,可例如将阈值设置为5。
在本公开的一种示例性实施例中,提取故障来源分类数据中每一个分类的最长公共子串,包括:通过最长公共子序列算法提取提取故障来源分类数据中每一个分类的最长公共子串。可例如通过如下方式:
在TRAP自动消息分类之后,得到故障来源分类数据,在参数提取之前提取每个类别的最长公共子串。
a.初步提取每个类别的最长公共子串
通过最长公共子序列算法(Longest Common Subsequence,LCS)提取最长公共子串,在本实施例中用LCS作为LCS算法的单位。例如,“Failed to connect database serverSQL181051-020”和“Failed to connectdatabase server SQL181051-023”的最长公共子串为“Failed to connect database server”。
可例如,某TRAP消息如图2A所示,执行LCS算法后,提取该类别的初步最长公共子串如图2B所示。
b.再次提取每个类别最长公共子串
在通过LCS算法初步提取LCS之后,该LCS中也可能存在潜在的参数。在LCS中删除这些参数,并获得每个TRAP消息类别准确的最长公共子串。这里可例如编写一个存储可能的参数模式的配置文件。将初步LCS与配置文件中的参数进行模式匹配。删除可以匹配任何参数模式的子字符串,并获得准确的LCS。
将上文中得到的初步LCS与配置文件中所有的参数模式进行比较,可例如,发现LCS字符串中包含于参数匹配的“Content-53990”。所以将这个LCS字符串缩短如下,获得更加精准的LCS:
TRAP:Id=in content database on database server TRAP_ACTION:Rethrow.
c.基于LCS提取每个类别的公共子串集合(日志签名)
在获得LCS后,将LCS与该类别的每个TRAP消息进行比较。然后可以通过分析参数和TRAP消息的不同部分来提取公共子串集合,由于它能表征同一消息类别的特征,在本发明实施例中将其称为“日志签名”。日志签名可用于准确提取每个TRAP消息的参数。
将再次提取的LCS与此类别中的每个TRAP消息进行比较,获得公共子串集合。上文的TRAP消息类别的最终公共子串集合如图2C所示。
在本公开的一种示例性实施例中,通过故障来源分类数据与最长公共子串提取故障参数,包括:通过故障来源分类数据中每一个分类中的数据与最长公共子串进行比较,以提取第一故障参数;通过第一故障参数与预设的参数模式进行比较,以获取故障参数。
在得到故障来源分类数据中每个类别的公共子串集合后,可以提取每个TRAP消息的参数。
a.通过将每个TRAP消息与公共子串集合进行比较来提取可能的参数,将每个两个相邻公共子串之间的字符串视为可能的参数。
b.将每个可能的参数与参数模式进行比较,如果可能的参数与参数模式匹配,则打印出与模式完全匹配的子串。否则,将整个参数字符串作为参数。
可例如,通过提取公共子串得到如图3A的结果,将公共子串集合与每条TRAP消息比较,得到可能的参数如图3B所示。
每个可能的参数与配置文件中的参数模式进行匹配,如果匹配成功,则输出匹配的参数。可例如,输出结果为SQL181051-020,而不是带引号的“SQL181051-020”,最终故障参数可例如图3C所示。
在本公开的一种示例性实施例中,通过故障参数与作业签名对异常消息数据进行标记分类,以获取分类数据,包括:通过故障参数确定每一个异常消息的作业签名;通过作业签名对异常消息数据进行标记分类,以获取第二数据;将第二数据进行统计处理以获取分类数据。
可例如,有4个作业日志文件,他们的异常消息内容如图4A所示。进行TRAP消息分类之后,所有的TRAP消息被分为如图4B所示的类别。可以从中得知作业日志中,每条TRAP消息属于哪一类别。可例如如图4C所示。进而获得每个作业日志文件的作业签名如图4D所示。
如果一个作业与另一个作业具有相同的TRAP消息类别集合,即他们具有相同的作业签名,则可认为这两个作业具有相同的作业类别。进而可以将这些作业日志归类为几个作业类别,这个作业类别以及分类相关的数据,即为分类数据:
Job Category1:{job1,job4}
Job Category2:{job2,job3}
在本公开的一种示例性实施例中,根据分类数据对故障情况进行处理,包括以下情况至少一者:通过作业出现次数对故障情况进行处理;通过作业类别出现次数对故障情况进行处理;以及通过消息出现次数对故障情况进行处理。
异常消息类别的重要性可例如通过以下标准进行评估:
·作业出现次数,即出现该异常消息类别的作业总数。
·作业类别出现次数,即出现该异常消息类别的作业类别的总数。
·消息出现次数,即属于该异常消息类别的消息出现总数。
若相应的出现次数较高,则认为该异常类别的重要性偏高。以上文中提到的数据为例,每个TRAP类别的TRAP消息内容如图5所示。
将上文中的分类数据进行统计,获得统计结果可例如如表4所示。
Figure BDA0001348562310000131
在本公开的一种示例性实施例中,还包括:通过分类数据与预设数据对故障情况进行分析。
预设数据可例如为关键对象的参数模式,预设数据可例如在配置文件中预定义的,如数据库服务器“SQL181051-024”,内容数据库“Content_53987”和站点集合ID“ca7867d5-e058-4987-b4e0-b060e534c1bc”,这些数据可例如为预设数据。这些预设数据可能出现在不同的作业日志文件中。通过关键对象统计,可以得到相应对象参数的作业分布情况。对于经常出现在失败作业中的对象参数,可以优先进行分析调查。
从上文中故障参数提取步骤得到故障参数分析结果。一些实际配置日志的对象参数分析结果可例如如下:
表5,TOP3异常数据库服务器
数据库服务器名称 失败作业数量 作业占比
SQL181051-027 218 24%
SQL181051-021 33 4%
SQL181051-023 32 4%
表6,TOP3异常CCA服务器
CCA服务器名称 失败作业数量 作业占比
CCA111092-000 22 2%
CCA111092-001 20 2%
CCA111092-002 20 2%
根据本发明的用于处理非结构化日志的方法,通过异常消息分类,进而进行异常消息类别的重要性评估和关键对象分析,可以快速初步定位失败原因及对象。
图6是根据另一示例性实施例示出的一种用于处理非结构化日志的方法的流程图。
如图所示,在S602中,进行异常消息预处理。
在S604中,基于日志签名的异常消息分类。
在S606中,基于作业签名的作业分类。
在S608中,异常消息类别的重要性评估(可例如,根据实际情况需要选择进行)。
在S610中,关键对象分析(可例如,根据实际情况需要选择进行)。
根据本发明的用于处理非结构化日志的方法,提高故障检测人员对失败作业分析的效率、协助确定作业分析优先级、自动初步分析故障原因、确保服务质量,而有效降低了大型商业分布式系统中执行异常(包括但不限于:错误行为或意外的长时间响应时间,分布式系统组件中的硬件问题,网络通信拥塞或软件错误)导致的用户不满或利益损失。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图7是根据一示例性实施例示出的一种用于处理非结构化日志的装置的框图。
接收模块702用于获取异常消息数据。
故障来源分类模块704用于通过日志签名对异常消息数据进行故障来源分类,以提取故障参数。
标记分类模块706用于通过故障参数与作业签名对异常消息数据进行标记分类,以获取分类数据。
评估模块708用于根据分类数据对故障情况进行处理。
在本公开的一种示例性实施例中,还包括:分析模块(图中未示出)用于通过分类数据与预设数据对故障情况进行分析。
根据本发明的用于处理非结构化日志的装置,通过将异常消息进行故障分类提取故障参数,进而通过故障参数对异常消息进行标记分类的方式,能够帮助开发人员大幅减少人工检查失败作业的数量,并初步定位故障原因,确保服务质量。
图8是根据一示例性实施例示出的一种电子设备的框图。
下面参照图8来描述根据本发明的这种实施方式的电子设备400。图8显示的电子设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:至少一个处理单元410、至少一个存储单元420、连接不同系统组件(包括存储单元420和处理单元410)的总线430、显示单元440等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元410执行,使得所述处理单元410执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元410可以执行如图1中所示的步骤。
所述存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元4202,还可以进一步包括只读存储单元(ROM)4203。
所述存储单元420还可以包括具有一组(至少一个)程序模块4205的程序/实用工具4204,这样的程序模块4205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备400也可以与一个或多个外部设备400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备400交互的设备通信,和/或与使得该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口450进行。并且,电子设备400还可以通过网络适配器460与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器460可以通过总线430与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述电子处方流转处理方法。
图9是根据一示例性实施例示出的一种计算机可读介质示意图。
参考图9所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。
通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的用于处理非结构化日志的方法及装置具有以下优点中的一个或多个。
根据一些实施例,本发明的用于处理非结构化日志的方法,通过将异常消息进行故障分类提取故障参数,进而通过故障参数对异常消息进行标记分类的方式,能够帮助开发人员大幅减少人工检查失败作业的数量,并初步定位故障原因,确保服务质量。
根据另一些实施例,本发明的用于处理非结构化日志的方法,通过将原始的异常消息进行去除噪声消息、去除冗余消息以及去除嵌套消息等操作,能够在后续异常消息处理时,提升处理效率,节约处理时间。
根据再一些实施例,本发明的用于处理非结构化日志的方法,通过异常消息分类,进而进行异常消息类别的重要性评估和关键对象分析,可以快速初步定位失败原因及对象。
以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“第一”、“第二”及“一”等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本发明可实施的范畴。

Claims (14)

1.一种用于处理非结构化日志的方法,其特征在于,包括:
获取异常消息数据;
通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数,其中,同一个类别的所述异常消息数据是由同一条源代码语句打印出来的,表示同一个故障来源,所述故障参数用于指出错误的对象,所述日志签名为每个类别的公共子串集合;
通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据,其中,所述作业签名为每个作业的异常消息类别集合;以及
根据所述分类数据对故障情况进行处理。
2.如权利要求1所述的方法,其特征在于,所述获取异常消息数据,包括:
对原始的异常消息数据进行处理,以获得异常消息数据。
3.如权利要求2所述的方法,其特征在于,所述对原始的异常消息数据进行处理,以获得异常消息数据,包括以下至少一者:
去除原始的异常消息数据中的噪音消息,以获得所述异常消息数据;
去除原始的异常消息数据中冗余的异常消息,以获得所述异常消息数据;以及
将原始的异常消息数据中嵌套的异常消息替换为内层异常消息,以获得所述异常消息数据。
4.如权利要求1所述的方法,其特征在于,所述通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数,包括:
通过编辑距离将所述异常消息分类,生成故障来源分类数据;
提取所述故障来源分类数据中每一个分类的最长公共子串;以及
通过所述故障来源分类数据与所述最长公共子串提取所述故障参数。
5.如权利要求4所述的方法,其特征在于,所述通过编辑距离将所述异常消息分类,生成故障来源分类数据,包括:
获取每两个所述异常消息之间的编辑距离;
确定阈值;以及
根据所述阈值对所述异常消息数据进行分类,以生成所述故障来源分类数据。
6.如权利要求4所述的方法,其特征在于,所述提取所述故障来源分类数据中每一个分类的最长公共子串,包括:
通过最长公共子序列算法提取所述故障来源分类数据中每一个分类的最长公共子串。
7.如权利要求4所述的方法,其特征在于,所述通过所述故障来源分类数据与所述最长公共子串提取所述故障参数,包括:
通过所述故障来源分类数据中每一个分类中的数据与所述最长公共子串进行比较,以提取第一故障参数;
通过所述第一故障参数与预设的参数模式进行比较,以获取所述故障参数。
8.如权利要求1所述的方法,其特征在于,所述通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据,包括:
通过所述故障参数确定每一个异常消息的所述作业签名;
通过所述作业签名对所述异常消息数据进行标记分类,以获取第二数据;
将所述第二数据进行统计处理以获取分类数据。
9.如权利要求1所述的方法,其特征在于,所述根据所述分类数据对故障情况进行处理,包括以下情况至少一者:
通过作业出现次数对故障情况进行处理;
通过作业类别出现次数对故障情况进行处理;以及
通过消息出现次数对故障情况进行处理。
10.如权利要求1所述的方法,其特征在于,还包括:
通过所述分类数据与预设数据对故障情况进行分析。
11.一种用于处理非结构化日志的装置,其特征在于,包括:
接收模块,用于获取异常消息数据;
故障来源分类模块,用于通过日志签名对所述异常消息数据进行故障来源分类,以提取故障参数,其中,同一个类别的所述异常消息数据是由同一条源代码语句打印出来的,表示同一个故障来源,所述故障参数用于指出错误的对象,所述日志签名为每个类别的公共子串集合;
标记分类模块,用于通过所述故障参数与作业签名对所述异常消息数据进行标记分类,以获取分类数据,其中,所述作业签名为每个作业的异常消息类别集合;以及
评估模块,用于根据所述分类数据对故障情况进行处理。
12.如权利要求11所述的装置,其特征在于,还包括:
分析模块,用于通过所述分类数据与预设数据对故障情况进行分析。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10中任一所述的方法。
CN201710566687.9A 2017-07-12 2017-07-12 用于处理非结构化日志的方法及装置 Active CN107301120B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710566687.9A CN107301120B (zh) 2017-07-12 2017-07-12 用于处理非结构化日志的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710566687.9A CN107301120B (zh) 2017-07-12 2017-07-12 用于处理非结构化日志的方法及装置

Publications (2)

Publication Number Publication Date
CN107301120A CN107301120A (zh) 2017-10-27
CN107301120B true CN107301120B (zh) 2021-04-30

Family

ID=60132645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710566687.9A Active CN107301120B (zh) 2017-07-12 2017-07-12 用于处理非结构化日志的方法及装置

Country Status (1)

Country Link
CN (1) CN107301120B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110635962B (zh) * 2018-06-25 2022-12-16 阿里巴巴集团控股有限公司 用于分布式系统的异常分析方法及装置
CN110968487A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 异常数据的分析方法及装置
CN111581057B (zh) * 2020-05-08 2022-06-14 厦门服云信息科技有限公司 一种通用日志解析方法、终端设备及存储介质
CN114328076B (zh) * 2021-09-18 2024-04-30 腾讯科技(深圳)有限公司 日志信息提取方法、装置、计算机设备和存储介质
CN115871745B (zh) * 2022-12-28 2024-05-10 江苏安防科技有限公司 一种应用于轨道交通的智能维护方法与装置
CN116909838B (zh) * 2023-06-21 2024-06-21 深圳腾信百纳科技有限公司 一种异常日志上报方法、系统、终端设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761173A (zh) * 2013-12-28 2014-04-30 华中科技大学 一种基于日志的计算机系统故障诊断方法及装置
CN104050289A (zh) * 2014-06-30 2014-09-17 中国工商银行股份有限公司 一种异常事件检测方法及系统
CN104461842A (zh) * 2013-09-23 2015-03-25 伊姆西公司 基于日志相似性来处理故障的方法和装置
CN106095659A (zh) * 2016-06-15 2016-11-09 安徽天枢信息科技有限公司 一种非结构化事件日志数据的实时监控方法与装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6503679B2 (ja) * 2014-10-06 2019-04-24 富士通株式会社 フィルタルール作成装置、フィルタルール作成方法、およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461842A (zh) * 2013-09-23 2015-03-25 伊姆西公司 基于日志相似性来处理故障的方法和装置
CN103761173A (zh) * 2013-12-28 2014-04-30 华中科技大学 一种基于日志的计算机系统故障诊断方法及装置
CN104050289A (zh) * 2014-06-30 2014-09-17 中国工商银行股份有限公司 一种异常事件检测方法及系统
CN106095659A (zh) * 2016-06-15 2016-11-09 安徽天枢信息科技有限公司 一种非结构化事件日志数据的实时监控方法与装置

Also Published As

Publication number Publication date
CN107301120A (zh) 2017-10-27

Similar Documents

Publication Publication Date Title
CN107301120B (zh) 用于处理非结构化日志的方法及装置
Huang et al. Supervised vs unsupervised models: A holistic look at effort-aware just-in-time defect prediction
US8607198B2 (en) Cross-concern code coverage assessment
US20150019513A1 (en) Time-series analysis based on world event derived from unstructured content
US20180046956A1 (en) Warning About Steps That Lead to an Unsuccessful Execution of a Business Process
US8006138B2 (en) Software quality assessment based on semantic similarities
US20120179658A1 (en) Cleansing a Database System to Improve Data Quality
CN103092761A (zh) 基于差异信息文件识别和检查修改代码块的方法及装置
JP6714152B2 (ja) 分析装置、分析方法及び分析プログラム
CN112445775B (zh) 一种光刻机的故障分析方法、装置、设备和存储介质
CN113396395A (zh) 有效评估日志模式的方法
CN112000806A (zh) 异常日志监控分析方法、系统、设备及存储介质
CN111736865A (zh) 一种数据库升级方法及系统
CN112163072A (zh) 基于多数据源的数据处理方法以及装置
US8543552B2 (en) Detecting statistical variation from unclassified process log
US11822578B2 (en) Matching machine generated data entries to pattern clusters
Jiang et al. A Large-scale Benchmark for Log Parsing
CN111581057B (zh) 一种通用日志解析方法、终端设备及存储介质
US9372690B2 (en) Analysis of data integration job
Mockus Software support tools and experimental work
CN115470034A (zh) 一种日志分析方法、设备及存储介质
CN114936139A (zh) 数据中心网络内的日志处理方法、装置、设备及存储介质
Polychniatis et al. Detecting cross-language dependencies generically
CN113760864A (zh) 数据模型的生成方法和装置
Kornahrens et al. Extracting process instances from user interaction logs

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
GR01 Patent grant
GR01 Patent grant