CN101950293A - 日志萃取方法及装置 - Google Patents
日志萃取方法及装置 Download PDFInfo
- Publication number
- CN101950293A CN101950293A CN 201010253680 CN201010253680A CN101950293A CN 101950293 A CN101950293 A CN 101950293A CN 201010253680 CN201010253680 CN 201010253680 CN 201010253680 A CN201010253680 A CN 201010253680A CN 101950293 A CN101950293 A CN 101950293A
- Authority
- CN
- China
- Prior art keywords
- daily record
- similarity
- repetition
- threshold
- calculated
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种日志萃取方法,包括:(a)基于日志源创建日志队列,(b)判断所读取的日志中是否存在数值型字符;(b)在判断为存在数值型字符时,将所读取的日志中的每个数值型字符都替换为一个预设的特殊字符;(c)计算替换后的日志与线程缓存器中存储的日志之间的相似度;(d)判断所计算出的相似度是否大于第一阈值,其中在所计算出的各相似度都不大于第一阈值时,将所读取的日志添加到线程缓存器并写入到日志全集中;以及(e)针对从日志队列中读取的下一日志,重复进行步骤(a)到(d),直到已经处理完所有日志为止。利用该日志萃取方法及装置,可以在计算相似度的算法固定的情况下,加快处理速度,并提高重复日志判断的准确性。
Description
技术领域
本发明涉及网络信息处理领域,更为具体地,涉及一种用于从海量的日志中萃取日志全集的日志萃取方法及装置。
背景技术
随着网络技术的日益发展,通过网络来传递信息正在成为一种趋势。然而,由于网络黑客经常利用木马程序非法侵入私人网络空间来窃取私人信息,因此,如何保证网络上的信息安全越来越受到重视。对于网络信息安全技术方案而言,对信息的分析和提取非常重要。
安全运维***提供了一种***的处理安全信息的解决方案,其核心功能之一就是处理网络中爆发的安全信息,并根据策略生成报警信息。具体地,首先,安全运维***监听网络中的各种信息(这些信息反应了网络设备在运行过程中的各种信息)。在接收到这些信息之后,安全运维***经过分析,提取有效信息,根据这些信息关联各种安全策略最终生成报警信息,并向网络管理员提示网络的运行状态。
安全运维中心要处理这些信息,就必须能够有效地识别并提取信息中的有价值信息,而这些工作都是在分析既有信息的基础上进行的。在这种情况下,安全运维***的信息分析师需要从各种安全信息中提取出有用信息,提供给产品开发人员,以便进一步增强安全运维***对信息的提取、分析和处理能力。
安全信息是指网络设备在运行过程中,按照某种机制,定时或条件触发地发出的信息,比如常用的Syslog,SNMP Trap信息等,在此将这些信息统一称为日志。
在分析和提取安全信息时,安全运维***首先需要能够识别日志,即需要具有日志的格式信息,这样***就能够根据日志的具体格式来进行具体的解析,提取出***所能处理的各种信息字段。其次,安全运维***需要能够根据信息表达的告警信息生成告警事件,这需要预先知道日志所表达的信息,即日志定义,***根据提取的字段及其相对应的日志定义,再根据制定的安全策略,从而生成相应的告警信息,达到安全运维目标。从上可以看出,在分析和提取安全信息时,安全运维***需要知道完整的日志信息。
完整的日志信息通常需要由网络设备制造商提供,包括日志的格式,以及整个的日志全集及其所表达的含义等。但在实际的运维现场,这些齐全的信息很难获取,而只能是通过在现场收集实际的现场日志信息,然后反馈到开发人员处,由信息分析师对日志进行分析并提取各种有用信息,然后制定解析策略,再由开发人员对日志做实际的处理。
通常情况下,现场收集到的日志样本将是海量的,因为它包含了***运行过程中收集到的各种信息,包括网络的运行状态和实时业务信息等。但是这海量的日志里面有大量是重复的日志,如重复的状态信息通报,重复的业务信息通报等,这些信息都是正常的***运行状态,与网络安全没有太多联系,而信息分析师则需要对所有这些收集到的信息进行分析,工作量巨大且严重受到这些重复日志的干扰。因此,需要一种技术来从海量日志中萃取出完整的日志样本,减轻信息分析师的工作量并提高工作质量。
日志萃取技术被开发来解决上述问题,其从海量的日志样本中萃取出格式各异的日志全集,从而为下一步的日志分析和处理提供原始日志样本。日志萃取的目的是从海量的日志中筛选出日志全集,并尽可能地过滤掉多余的重复日志。关于重复日志的概念在下面进行简单说明。
重复日志通常是完全一样的两条日志(字符串)。但实际上,由于日志中都包含有时间戳字段,这也就意味着不同时间发出的日志肯定不会完全一样。此外,日志中还可能包含有其他一些可变的字段,而这些字段值的变化对于信息提取是没有多大意义的。因此,在日志萃取技术方案中,需要扩大重复日志的包含范围。通常,将仅仅这些可变信息字段不同的日志也视为重复日志,换言之,重复日志是指表达同一种事件的日志。
通常假定重复日志在一定程度上是相同的,并且利用相似度来衡量。在现有判断重复日志的技术中,通过设定一个阀值来判断两条日志是否重复。比如设定阀值为80%,则当两条日志的相似度大于80%,就判定这两条日志是重复日志。目前已经存在多种字符串的相似度算法,比如俄罗斯科学家Vladimir Levenshtein提出的Levenshtein distance(编辑距离)算法。在该算法中,通过把字符串1变成字符串2需要的最小单字符操作(***、删除和替换)的次数来计算两个字符串的相差程度。利用该算法,能够比较好地计算出字符串之间的相似度,其时间和空间复杂度为O(n^2)。
然而,对于海量的日志,如果两两比较,然后排除掉重复日志,这需要大量的计算并且非常耗时,从而在性能上是不可行的。
此外,在利用传统日志萃取方法萃取出的日志中可能包含有这样的重复日志:时间字段差别比较大,但其余部分基本一致。另外,在萃取日志时还可能过滤掉了这样一些日志:时间字段相近,但其余部分相差较远。这是因为在计算相似度时,时间字段占据了比较长的日志长度,由此时间字段相近则提高了相似度,时间字段差别大就降低了相似度,从而导致重复日志判断失败。
因此,需要一种高效的排除掉重复日志的方法。利用该方法,在计算相似度的算法固定的情况下,可以尽可能减少相似度计算的次数,加快处理速度,并提高重复日志判断的准确性。
发明内容
鉴于上述问题,本发明提供了一种日志萃取方法及装置,利用该日志萃取方法及装置,通过替换日志中包含的数值型字符以及采用多线程分段处理技术,可以在计算相似度的算法固定的情况下,尽可能减少相似度计算的次数,加快处理速度,并提高重复日志判断的准确性。
根据本发明的一个方面,提供了一种基于单线程的日志萃取方法,包括:(a)基于日志源创建日志队列;(b)针对从日志队列中读取的日志,判断所读取的日志中是否存在数值型字符;(c)在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的每一个数值型字符都替换为一个预设的特殊字符;(d)计算替换后的该所读取的日志与线程缓存器中存储的各日志之间的相似度;(e)判断所计算出的相似度是否大于第一阈值,其中在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器并作为要萃取的日志写入到日志全集中;以及(f)针对从日志队列中读取的下一日志,重复进行步骤(a)到(d),直到已经处理完所有日志为止。
此外,在至少一个所计算出的相似度大于第一阈值时,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。
此外,在所述线程缓存器中缓存的日志数超过第二阈值时,清空所述线程缓存器。
此外,优选地,所述第一阈值为80%。
根据本发明的另一方面,提供了一种基于多线程的日志萃取方法,包括:((a)将所读取的日志集合分组为多组日志;(b)针对多组日志中的各组日志,利用多线程同时判断各组日志中的每个日志是否是重复日志;(c)在判断为该日志是重复日志时,从该组日志中删除该日志;(d)将各组剩余的未被确定为是重复日志的日志组合为新的日志集合,并且预定次数地重复进行步骤(a)到(d);(e)将最后剩余的未被确定为重复日志的日志写入到日志全集中,其中,针对各组日志中的每个日志判断该日志是否是重复日志的步骤还包括:判断该所读取的日志中是否存在数值型字符;在判断为该日志中存在数值型字符时,将该日志中的每一个数值型字符都替换为一个预设的特殊字符;计算替换后的该日志与线程缓存器中存储的各日志之间的相似度;以及判断所计算出的相似度是否大于第一阈值,在所计算出的相似度大于第一阈值时,确定该日志是重复日志。
此外,优选地,重复进行步骤(a)到(d)的预定次数是3次。
此外,在判断该日志是否是重复日志的步骤中,在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器中。
根据本发明的另一方面,提供了一种日志萃取装置,包括:日志队列创建单元,用于基于日志源创建日志队列;数值型字符判断单元,用于针对从日志队列中读取的日志,判断该所读取的日志中是否存在数值型字符;替换单元,用于在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的每一个数值型字符都替换为一个预设的特殊字符;相似度计算单元,用于计算替换后的该所读取的日志与线程缓存器中存储的各日志之间的相似度;比较单元,用于将所计算出的相似度与第一阈值进行比较,以确定所计算出的相似度是否大于第一阈值,以及添加单元,用于在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器并作为要萃取的日志添加到日志全集中。
此外,所述日志萃取装置还包括过滤单元,用于在至少一个所计算出的相似度大于第一阈值时,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。
根据本发明的另一方面,提供了一种日志萃取装置,包括:分组单元,用于将所读取的日志集合分为多组日志;重复日志判断单元,用于针对多组日志中的各组日志,同时判断各组日志中的每个日志是否是重复日志;删除单元,用于在判断为该日志是重复日志时,从该组日志中删除该日志;组合单元,用于将各组剩余的未被确定为重复日志的日志组合为新的日志集合,以针对新的日志集合,再次进行日志分组、重复日志判断和删除处理;添加单元,用于在对所读取的日志集合预定次数地重复日志分组、日志判断和删除处理后,将最后剩余的未被确定为重复日志的日志添加到日志全集中,其中,所述重复日志判断单元还包括:数值型字符判断单元,判断该所读取的日志中是否存在数值型字符;替换单元,用于在判断为该日志中存在数值型字符时,将该日志中的每一个数值型字符都替换为一个预设的特殊字符;相似度计算单元,用于计算替换后的该日志与线程缓存器中存储的各日志之间的相似度;以及比较单元,用于将所计算出的相似度与第一阈值进行比较,以确定所计算出的相似度是否大于第一阈值,其中,在所计算出的相似度大于第一阈值时,所述重复日志判断判断单元确定该日志是重复日志,并且所述删除单元从该组日志中删除该日志。
此外,在所计算出的各相似度都不大于第一阈值时,所述重复日志判断判断单元确定该日志不是重复日志,并且所述添加单元将该所读取的日志添加到所述线程缓存器中。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1示出了根据本发明的一个实施例的基于单线程的日志萃取方法的流程图;
图2示出了根据本发明的一个实施例的基于多线程分段过滤的日志萃取方法的流程图;
图3示出了图2中的日志萃取方法中的判断各组日志中的每个日志是否是重复日志的过程的流程图;
图4示出了图2中的日志萃取方法的总体程序运行示意图;
图5示出了作为图2中的日志萃取方法的一个示例的主程序流程图;
图6示出了根据本发明的一个实施例的基于单线程的日志萃取装置的方框示意图;
图7示出了根据本发明的一个实施例的基于多线程分段技术的日志萃取装置的方框示意图;和
图8示出了图7中的日志萃取装置中的重复日志判断单元的细节图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
下面描述本公开的各个方面。应该明白的是,本文的教导可以以多种多样形式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代表性的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按照各种方式组合。例如,可以使用本文所阐述的任何数目的方面,实现装置或实践方法。另外,可以使用其它结构、功能、或除了本文所阐述的一个或多个方面之外或不是本文所阐述的一个或多个方面的结构和功能,实现这种装置或实践这种方法。此外,本文所描述的任何方面可以包括权利要求的至少一个元素。
以下将结合附图对本发明的具体实施例进行详细描述。
图1示出了根据本发明的一个实施例的基于单线程的日志萃取方法的流程图。
如图1所示,在步骤S110中,基于日志源创建日志队列。具体,例如,通过负责程序的整体运行逻辑的主程序初始化启动线程,从文件中读取日志并基于所读取的日志创建日志队列。
然后,在步骤S120中,针对从日志队列中读取的日志,判断该所读取的日志中是否存在数值型字符。具体地,例如,在通过负责程序的整体运行逻辑的主程序初始化启动线程,从文件中读取日志并基于所读取的日志创建日志队列后,线程从日志队列中读取一个日志,针对该读取的日志,判断该所读取的日志中是否存在数值型字符。这里,主程序还协调线程运行以及日志数据的流向等。如果存在数值型字符,则由主线程为该读取的日志设置替换标记信息,然后流程进行到步骤S130。否则,流程进行到步骤S140。
在步骤S130中,在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的每一个数值型字符都替换为一个预设的特殊字符。其中,对于该特殊字符,在计算相似度时,只要特殊字符的格式相同就判断为该特殊字符相同。然后,流程进行到步骤S140。
在步骤S140中,计算该所读取的日志与线程缓存器中缓存的日志之间的相似度。然后,流程进行到步骤S150。
在步骤S150中,判断所计算出的相似度是否大于第一阈值,该第一阈值是预先设置的,优选地,该第一阈值为80%。
在判断为所计算出的相似度不大于第一阈值时,流程进行到步骤S160。在步骤S160中,判断是否遍历完线程缓存器中缓存的日志。如果遍历完,则在步骤S180中,将该所读取的日志添加到所述线程缓存器并作为要萃取的日志写入到日志全集中。然后,流程进行到步骤S190。如果没有遍历完,则返回到步骤S140中,计算该所读取的日志与线程缓存器中缓存的下一日志之间的相似度。
在判断为所计算出的相似度大于第一阈值时,则在步骤S170中,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。然后,流程进行到步骤S190。在步骤S190,判断是否处理完所有待处理的日志。如果没有处理完,则流程返回到步骤S120,针对从日志队列中读取的下一日志进行上述处理。如果已经处理完所有待处理的日志,则流程结束。
这里要说明的是,优选地,在步骤S180后,还可以包括判断线程缓存器中缓存的日志数是否超过第二阈值的步骤,在线程缓存器中缓存的日志数超过第二阈值时,清空线程缓存器。然后,进行到步骤S190。在线程缓存器中缓存的日志数没有超过第二阈值时,直接进行到步骤S190。
图2示出了根据本发明的另一实施例的基于多线程的日志萃取方法的流程图。图4示出了图2中的基于多线程的日志萃取方法的总体程序运行示意图。如图4所示,主程序负责程序的整体运行逻辑,包括初始化启动线程,从文件中读取日志,协调线程运行以及日志数据的流向等。文件用作存储日志的载体,是日志数据的来源,也是最终日志的结果存储地。队列实现在内存中维护日志,以加快程序的运行。线程是处理的实体,每个线程都维护一个链表,线程从队列中读取日志并与链表中的日志进行比较然后过滤掉重复日志,然后再将结果写入到目标文件中。总的运行由主程序控制,如进行多少次过滤,线程缓存大小,目标文件,每次过滤的线程数等。由此,对整个程序的运行进行有效控制,从而协调整体,实现多线程分段逐次过滤。
图5示出了作为图2中的日志萃取方法的一个示例的主程序流程图。如图5所示,首先是进行初始化,预备将日志读取等,然后开启线程准备处理,之后是读取日志并将日志放到队列中,而每个线程都会从该队列中将日志取出,然后进行各自的处理。主程序的作用主要是协调线程的运行,如每一次过滤线程开启的数量,读取日志的来源和操作后日志存放的目标等,这些都是由主程序来控制的。
下面参照图2来详细描述基于多线程进行的日志萃取过程。
如图2所示,在步骤S210中,将所读取的日志集合分组为多组日志。然后,在步骤S220中,针对多组日志中的各组日志,利用多线程同时判断各组日志中的每个日志是否是重复日志。关于针对各组日志中的每个日志判断该日志是否是重复日志的具体过程,将在下面参照图3进行详细说明。
在判断为该日志是重复日志时,流程进行到步骤S230。否则,流程进行到步骤S240。
在步骤S230中,从该组日志中删除该日志,然后流程进行到步骤S240。
在步骤S240中,判断是否针对该组中的所有日志已经完成是否是重复日志的判断。在已经针对该组中的所有日志完成重复日志的判断时,流程进行到步骤S250。否则,流程返回到步骤S220。
在步骤S250中,将各组剩余的未被确定为是重复日志的日志组合为新的日志集合,然后流程进行到步骤S260。
在步骤S260中,判断重复进行步骤S210到S240的次数是否已经达到预定次数,其中该预定次数优选为3次。
在没有达到预定次数时,返回到步骤S210,针对新的日志集合重新进行处理。在已经达到预定次数后,流程进行到步骤S270。
在步骤S270中,将最后剩余的未被确定为重复日志的日志作为要萃取的日志写入到日志全集中。
图3示出了针对各组日志中的每个日志判断该日志是否是重复日志的具体过程。如图3所示,在步骤S221中,判断该所读取的日志中是否存在数值型字符。如果存在数值型字符,则由主线程为该读取的日志设置替换标记信息,然后流程进行到步骤S222。否则,流程进行到步骤S223。
在步骤S222中,在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的每一个数值型字符都替换为一个预设的特殊字符。其中,对于该特殊字符,在计算相似度时,只要特殊字符的格式相同就判断为该特殊字符相同。然后,流程进行到步骤S223。
在步骤S223中,计算该所读取的日志与线程缓存器中缓存的日志之间的相似度。然后,流程进行到步骤S224。
在步骤S224中,判断所计算出的相似度是否大于第一阈值,该第一阈值是预先设置的,优选地,该第一阈值为80%。
在判断为所计算出的相似度不大于第一阈值时,流程进行到步骤S225。在步骤S225中,判断是否遍历完线程缓存器中缓存的日志。如果遍历完,则在步骤S226中,判断该日志不是重复日志。如果没有遍历完,则返回到步骤S223中,计算该所读取的日志与线程缓存器中缓存的下一日志之间的相似度。
在判断为所计算出的相似度大于第一阈值时,则在步骤S227中,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。
这里要说明的是,图3示出的是第一次进行过滤线程时线程所执行的过程。在再次进行过滤时,即第二次或第三次进行过滤线程时,步骤S221被替换为步骤S221’,在步骤S221’中,确定所述日志是否具有替换标记信息。在具有替换标记信息时,判断为该日志具有数值型字符,然后流程进行到步骤S222。否则,流程进行到步骤S223。
利用上述基于多线程分段的日志萃取方法,在相似度算法选定的情况下,首先,可以将海量的日志分成几份,分别筛选,这样每一份样本所需要计算的次数将大大减轻,并且每一份样本都能过滤掉大量重复日志。其次,考虑逐次筛选,前面的筛选过滤掉一部分重复日志,后面的筛选则从剩下的日志中做下一次的筛选,而每一级的筛选都是高效的筛选。
对日志进行分段处理能够有效地减少比较的次数,如果是不分段,那么就需要对日志进行两两比较,则最坏情况下,需要比较(n^2+n)/2,复杂度为O(N^2),而如果分段的话,如分为m段,则在最坏情况下,需比较m((n/m)^2+n/m)/2=n^2/2m+n/2,复杂度为O(n^2/m),当m趋向n时,复杂度趋向于线性。当然,m不能完全趋向于n,因为m趋向于n,则意味着无法有效的进行过滤。假定在n个样本中,应该抽出k个不一样的样本,则当各段包含的日志数量大于k时,则最坏的情况下,每段都含有这k个样本,于是分m段过滤后将有mk个样本。所以需要找到一个比较合理的分段方法。
此外,由于进行了分段处理,段与段之间存在重复日志不可避免,所以在基于多线程的分段处理方法中,需要进行多次重复过滤,才能实现期望的重复日志排除的准确度。
在对大样本文件利用多线程技术分段进行处理时,分段的标准通常为各段的一个线程维护的结果集小于某一个阀值,假设该阀值为k,要超过该阀值可能需要搜索m(其中m>=k)个日志进行判断,则比较次数要少于mk。假设共分了j段,则n=m1+…+mj。按照平均计算,每段m个,则n=mj。最坏情况下m=k,即便是这样的情况下,最坏比较次数也仅为n^2/2m+n/2。而如果大样本文件中包含有大量的重复日志,则m远大于k,比较次数亦大大减小。如此则在第一次过滤之后,就可以在很大程度上减少剩余的日志数量。
经过多次测试,确定3次重复过滤能比较好的达到过滤的目的,并能达到较高的萃取性能。
对于这三次过滤,第一次过滤的目的是过滤掉重复日志,重点不在于结果集中是否还有重复日志,所以可以增加分组数量对日志进行处理,在单线程的情况下,则缓存队列的阀值为分组条件,在多线程的情况下,则多线程数量和缓存队列阀值双重作为分组条件。如开30个线程,这样日志就会被分成至少30个组来进行过滤,这30个组相互独立,组之间存在重复日志在所难免。另外因为海量日志,所以这30个组中的每个组可能依然有很多的日志存在,为了避免过多的日志间的相似度计算,为每个线程的缓存队列设定一个阀值,如50,则实际上在判断一个日志是否重复的时候就不会超过50次的相似度计算。当缓存队列日志的数量大于这个阀值时,则清空。如此,则实际上,当一个线程的缓存队列被清空时,则日志就被多分组一次。如此,则每一个日志在判断是否是重复日志时,都不会进行超过50次的相似度计算,大大提高了判断重复日志的速度;而另一方面,组和组之间会存在重复日志,而且重复日志数量会随着分组数量的增多而增多,故阀值不应该小于50。
第二次过滤,目的和第一次差不多,还是为了有效的过滤掉重复日志,不同的是,第二次过滤是在第一次过滤的基础上的,相比第一次过滤,其所过滤的日志数量要小很多,另外就是他为最后第三次过滤的合集做准备,故应该减少分组,以免过多分组会含有过多的重复日志。从上面的分析来看,减少分组就应该减少线程的数量和增大线程缓存队列的阀值。如开10个线程,设置阀值为100。如此,则可以较第一次大大减少分组数量,从而减少结果集中的重复日志;另一方面,因为分组,所以可以加快判断一个日志是否重复的计算速度,从而加快总体上加快过滤的速度。
第三次过滤,因为是最后一次过滤,重点是考虑最终的结果集中重复日志的多少,以提高日志萃取的效果。首先应该假设结果集中没有重复日志,故应该只开一个线程,这样就不会因为各线程的独立性将日志分组。可见,此时是单线程在处理,如果缓存队列的阀值设置得足够大,则结果集中将不会有重复日志。但为了提高处理速度,故还是要有一个阀值,当判断一个日志是否是重复日志所需进行的相似度计算过多时,清空缓存队列。这个阀值可根据日志样本的情况做一个初步的判断进行设定,如设定为300,这样在结果集小于这个阀值时,则结果集中没有重复日志;另外因为做了阀值限定,当结果集大于这个阀值时,又进行了分组,避免当结果集很大时,计算速度大幅降低。就经验而论,一种设备的日志在格式上一般不会超过300种,故这个阀值在一定程度上能保证结果集的数量不会超过这个阀值而需要进行分组处理从而使结果中包含重复日志。
综上可以看出,三次过滤因为关注点不同,故所开的线程数以及线程阀值的设定就有不同的考虑。线程数应该逐步减少,而阀值则应该逐步增大。按照经验而定:线程数,第一次是30,第二次是10,第三次是1;对于阀值,第一次是50,第二次100,第三次是300。当然,在一定场合,也可以每一次过滤都根据上一次的结果来设定这些值。
如上参照图2-图5对根据本发明的日志萃取方法进行了详细说明。本发明的上述日志萃取方法,可以采用软件实现,也可以采用硬件实现,或采用软硬件结合的方式实现。
图6示出了根据本发明的一个实施例的基于单线程的日志萃取装置600的方框示意图。如图6所示,所述日志萃取装置600包括日志队列创建单元610、数值型字符判断单元620、替换单元630、相似度计算单元640、比较单元650以及添加单元660。
日志队列创建单元610基于日志源创建日志队列。数值型字符判断单元610针对从日志队列中读取的日志,判断该所读取的日志中是否存在数值型字符。在判断为存在数值型字符时,替换单元630将该所读取的日志中的每一个数值型字符都替换为一个预设的特殊字符。
然后,相似度计算单元640计算替换后的该所读取的日志与线程缓存器中存储的日志之间的相似度,或者计算没有经过替换的该日志与线程缓存器中缓存的日志之间的相似度。
比较单元650将所计算出的相似度与第一阈值进行比较,以确定所计算出的相似度是否大于第一阈值。该第一阈值是预先设置的,优选地,该第一阈值为80%。这里要说明的是,在所计算出的相似度不大于第一阈值时,相似度计算单元640还会计算该所读取的日志与线程缓存器中缓存的下一日志之间的相似度,直到线程缓存器中缓存的日志被遍历完为止。
只有在所计算出的与所有缓存日志之间的各相似度都不大于第一阈值时,添加单元660才将该所读取的日志添加到所述线程缓存器并作为要萃取的日志添加到日志全集中。
此外,所述日志萃取装置600还可以包括过滤单元(未示出),用于在至少一个所计算出的相似度大于第一阈值时,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。
图7示出了根据本发明的一个实施例的基于多线程分段技术的日志萃取装置700的方框示意图。如图7所示,所述日志萃取装置700包括分组单元710、重复日志判断单元730、删除单元750、组合单元770和添加单元790。
图8示出了图7中的日志萃取装置中的重复日志判断单元730的细节图。如图8所示,所述重复日志判断单元730还包括数值型字符判断单元731、替换单元733、相似度计算单元735以及比较单元737。
分组单元710将所读取的日志集合分为多组日志。然后,重复日志判断单元730针对多组日志中的各组日志,同时判断各组日志中的每个日志是否是重复日志。在判断为该日志是重复日志时,删除单元750从该组日志中删除该日志。
在针对各组日志进行完上述处理后,组合单元770将各组剩余的未被确定为重复日志的日志组合为新的日志集合,以针对新的日志集合,再次进行日志分组、重复日志判断和删除处理。
在对所读取的日志集合预定次数地重复日志分组、日志判断和删除处理后,添加单元790将最后剩余的未被确定为重复日志的日志添加到日志全集中。
其中,在所述重复日志判断单元730中,数值型字符判断单元731判断该所读取的日志中是否存在数值型字符。在判断为该日志中存在数值型字符时,替换单元733将该日志中的每一个数值型字符都替换为一个预设的特殊字符。然后,相似度计算单元735计算替换后的该日志与线程缓存器中存储的日志之间的相似度,或者计算未经过替换的该日志与线程缓存器中缓存的日志之间的相似度。比较单元737将所计算出的相似度与第一阈值进行比较,以确定所计算出的相似度是否大于第一阈值,该第一阈值是预先设置的,优选地,该第一阈值为80%。在所计算出的相似度大于第一阈值时,所述重复日志判断判断单元730确定该日志是重复日志,并且所述删除单元750从该组日志中删除该日志。这里要说明的是,在所计算出的相似度不大于第一阈值时,相似度计算单元735还会计算该所读取的日志与线程缓存器中缓存的下一日志之间的相似度,直到线程缓存器中缓存的日志被遍历完为止。只有在所计算出的与所有缓存日志之间的各相似度都不大于第一阈值时,才认为该日志不是重复日志。
下面给出了根据本发明的日志萃取方法的性能测试。
在测试中使用日志样本集520多万条,且该520万条日志样本存储于文件中。在程序处理时,从文件中逐条读出日志,然后进行过滤处理,并最后写入到另外一个文件中。
在不替换数值字符的情况下,萃取出的日志中包含有这样的重复日志:时间字段差别比较大,但其余部分基本一致。另外,萃取出的日志还过滤掉了这样一些日志:时间字段相近,但其余部分相差较远。这是因为程序在计算相似度时,时间字段占据了比较长的日志长度,时间字段相近则提高了相似度,时间字段差别大就降低了相似度,所以就导致程序判断失败。
而将日志中的数值字符替换为特殊字符后,大大提高了判断重复日志的精确性,在设置重复阀值为80%的情况下,萃取之后的日志可以达到功能上的要求:包含日志全集(较人工提取的全集更全),过滤重复日志(基本不含重复日志)。经过测试,程序从一个520多万条日志的文件中读取并过滤日志,最终萃取了80多条样本,并且这80多条样本涵盖了人工分析得出的样本结果,与人工分析相比,程序萃取的样本很稳定而且更有利于后续日志的分析工作。
此外,在不采用多线程分段过滤的情况下,运行程序提取520多万条日志需要耗时2个多小时。而采用如上所述的基于多线程的日志萃取方法,仅需20多分钟即可完成对日志的解析过程。在性能上有了很大改进。
有益效果
通过以上结合附图对本发明实施例的详细描述,不难看出:本发明提供的日志萃取方法及装置,通过替换日志中包含的数值型字符以及采用多线程分段处理技术,可以在计算相似度的算法固定的情况下,尽可能减少相似度计算的次数,加快处理速度,并提高了重复日志判断的准确性。
虽然如上参照图1到图8描述了根据本发明的日志萃取方法及装置的各个实施例进行了描述,但是本领域技术人员应当理解,对上述本发明所提出的网络拓扑发现方法和装置,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (12)
1.一种基于单线程的日志萃取方法,包括:
(a)基于日志源创建日志队列;
(b)针对从日志队列中读取的日志,判断所读取的日志中是否存在数值型字符;
(c)在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的数值型字符的每一个都替换为一个预设的特殊字符;
(d)计算替换后的该所读取的日志与线程缓存器中存储的各日志之间的相似度;
(e)判断所计算出的相似度是否大于第一阈值,其中在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器并作为要萃取的日志写入到日志全集中;以及
(f)针对从日志队列中读取的下一日志,重复进行步骤(a)到(e),直到已经处理完所有日志为止。
2.如权利要求1所述的日志萃取方法,其中,在步骤(e)中还包括:
在至少一个所计算出的相似度大于第一阈值时,确定该所读取的日志是重复日志,并过滤掉该所读取的日志,然后执行步骤(f)。
3.如权利要求1所述的日志萃取方法,其中,在所述线程缓存器中缓存的日志数超过第二阈值时,清空所述线程缓存器。
4.如权利要求1所述的日志萃取方法,其中,所述第一阈值为80%。
5.一种基于多线程的日志萃取方法,包括:
(a)将所读取的日志集合分组为多组日志;
(b)针对多组日志中的各组日志,利用多线程同时判断各组日志中的每个日志是否是重复日志;
(c)在判断为该日志是重复日志时,从该组日志中删除该日志;
(d)将各组剩余的未被确定为是重复日志的日志组合为新的日志集合,并且预定次数地重复进行步骤(a)到(d);
(e)将最后剩余的未被确定为重复日志的日志写入到日志全集中,
其中,针对各组日志中的每个日志判断该日志是否是重复日志的步骤还包括:
判断该所读取的日志中是否存在数值型字符;
在判断为该日志中存在数值型字符时,将该日志中的数值型字符的每一个都替换为一个预设的特殊字符;
计算替换后的该日志与该线程缓存器中存储的各日志之间的相似度;以及
判断所计算出的相似度是否大于第一阈值,
在所计算出的相似度大于第一阈值时,确定该日志是重复日志。
6.如权利要求5所述的日志萃取方法,其中,重复进行步骤(a)到(d)的预定次数是3次。
7.如权利要求5所述的日志萃取方法,其中,在判断该日志是否是重复日志的步骤中还包括:
在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器中。
8.如权利要求5所述的日志萃取方法,其中,所述第一阈值是80%。
9.一种基于单线程的日志萃取装置,包括:
日志队列创建单元,用于基于日志源创建日志队列;
数值型字符判断单元,用于针对从日志队列中读取的日志,判断该所读取的日志中是否存在数值型字符;
替换单元,用于在判断为该所读取的日志中存在数值型字符时,将该所读取的日志中的每一个都数值型字符替换为一个预设的特殊字符;
相似度计算单元,用于计算替换后的该所读取的日志与线程缓存器中存储的各日志之间的相似度;以及
比较单元,用于将所计算出的相似度与第一阈值进行比较,以确定所计算出的相似度是否大于第一阈值,以及
添加单元,用于在所计算出的各相似度都不大于第一阈值时,将该所读取的日志添加到所述线程缓存器并作为要萃取的日志添加到日志全集中。
10.如权利要求9所述的日志萃取装置,还包括:
过滤单元,用于在至少一个所计算出的相似度大于第一阈值时,确定该所读取的日志是重复日志,并过滤掉该所读取的日志。
11.一种基于多线程的日志萃取装置,包括:
分组单元,用于将所读取的日志集合分为多组日志;
重复日志判断单元,用于针对多组日志中的各组日志,同时判断各组日志中的每个日志是否是重复日志;
删除单元,用于在判断为该日志是重复日志时,从该组日志中删除该日志;
组合单元,用于将各组剩余的未被确定为重复日志的日志组合为新的日志集合,以针对新的日志集合,再次进行日志分组、重复日志判断和删除处理;
添加单元,用于在对所读取的日志集合预定次数地重复日志分组、日志判断和删除处理后,将最后剩余的未被确定为重复日志的日志添加到日志全集中,
其中,所述重复日志判断单元还包括:
数值型字符判断单元,判断该所读取的日志中是否存在数值型字符;
替换单元,用于在判断为该日志中存在数值型字符时,将该日志中的每一个数值型字符都替换为一个预设的特殊字符;
相似度计算单元,用于计算替换后的该日志与线程缓存器中存储的各日志之间的相似度;以及
比较单元,用于将所计算出的相似度与预定阈值进行比较,以确定所计算出的相似度是否大于预定阈值,
其中,在所计算出的相似度大于第一阈值时,所述重复日志判断判断单元确定该日志是重复日志,并且所述删除单元从该组日志中删除该日志。
12.如权利要求11所述的日志萃取装置,其中,在所计算出的各相似度都不大于第一阈值时,所述重复日志判断判断单元确定该日志不是重复日志,并且所述添加单元将该所读取的日志添加到所述线程缓存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010253680XA CN101950293B (zh) | 2010-08-11 | 2010-08-11 | 日志萃取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010253680XA CN101950293B (zh) | 2010-08-11 | 2010-08-11 | 日志萃取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101950293A true CN101950293A (zh) | 2011-01-19 |
CN101950293B CN101950293B (zh) | 2012-11-21 |
Family
ID=43453795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010253680XA Active CN101950293B (zh) | 2010-08-11 | 2010-08-11 | 日志萃取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101950293B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049260A (zh) * | 2015-08-24 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 日志管理方法和装置 |
CN105898360A (zh) * | 2016-05-31 | 2016-08-24 | 无锡天脉聚源传媒科技有限公司 | 一种活动日志的排重方法及装置 |
CN106326086A (zh) * | 2016-08-18 | 2017-01-11 | 杭州华为数字技术有限公司 | 关键运行日志提取方法及装置 |
CN106407350A (zh) * | 2016-09-05 | 2017-02-15 | 广州视睿电子科技有限公司 | 错误日志信息过滤方法及装置 |
CN107704478A (zh) * | 2017-01-16 | 2018-02-16 | 贵州白山云科技有限公司 | 一种写入日志的方法和*** |
CN108984362A (zh) * | 2017-05-31 | 2018-12-11 | 北京京东尚科信息技术有限公司 | 日志采集方法及装置、存储介质、电子设备 |
CN109710502A (zh) * | 2018-12-19 | 2019-05-03 | 苏州科达科技股份有限公司 | 日志传输方法、装置及存储介质 |
CN110908972A (zh) * | 2019-11-19 | 2020-03-24 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
CN111930701A (zh) * | 2020-08-13 | 2020-11-13 | 工银科技有限公司 | 日志结构化处理方法及装置 |
CN112000806A (zh) * | 2020-08-25 | 2020-11-27 | 携程旅游信息技术(上海)有限公司 | 异常日志监控分析方法、***、设备及存储介质 |
CN112560407A (zh) * | 2020-12-18 | 2021-03-26 | 上海中畅数据技术有限公司 | 一种在线提取计算机软件日志模板的方法 |
CN113064869A (zh) * | 2021-03-23 | 2021-07-02 | 网易(杭州)网络有限公司 | 日志处理方法、装置、发送端、接收端设备及存储介质 |
CN114818643A (zh) * | 2022-06-21 | 2022-07-29 | 北京必示科技有限公司 | 一种保留特定业务信息的日志模板提取方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425064A (zh) * | 2007-10-29 | 2009-05-06 | 英业达股份有限公司 | 测试日志处理方法及*** |
JP2010072984A (ja) * | 2008-09-19 | 2010-04-02 | Hitachi Software Eng Co Ltd | ログ管理サーバ |
-
2010
- 2010-08-11 CN CN201010253680XA patent/CN101950293B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425064A (zh) * | 2007-10-29 | 2009-05-06 | 英业达股份有限公司 | 测试日志处理方法及*** |
JP2010072984A (ja) * | 2008-09-19 | 2010-04-02 | Hitachi Software Eng Co Ltd | ログ管理サーバ |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049260A (zh) * | 2015-08-24 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 日志管理方法和装置 |
CN105898360A (zh) * | 2016-05-31 | 2016-08-24 | 无锡天脉聚源传媒科技有限公司 | 一种活动日志的排重方法及装置 |
CN105898360B (zh) * | 2016-05-31 | 2019-06-14 | 无锡天脉聚源传媒科技有限公司 | 一种活动日志的排重方法及装置 |
CN106326086B (zh) * | 2016-08-18 | 2019-01-11 | 杭州华为数字技术有限公司 | 关键运行日志提取方法及装置 |
CN106326086A (zh) * | 2016-08-18 | 2017-01-11 | 杭州华为数字技术有限公司 | 关键运行日志提取方法及装置 |
CN106407350A (zh) * | 2016-09-05 | 2017-02-15 | 广州视睿电子科技有限公司 | 错误日志信息过滤方法及装置 |
CN107704478A (zh) * | 2017-01-16 | 2018-02-16 | 贵州白山云科技有限公司 | 一种写入日志的方法和*** |
CN108984362A (zh) * | 2017-05-31 | 2018-12-11 | 北京京东尚科信息技术有限公司 | 日志采集方法及装置、存储介质、电子设备 |
CN109710502A (zh) * | 2018-12-19 | 2019-05-03 | 苏州科达科技股份有限公司 | 日志传输方法、装置及存储介质 |
CN109710502B (zh) * | 2018-12-19 | 2022-06-14 | 苏州科达科技股份有限公司 | 日志传输方法、装置及存储介质 |
CN110908972A (zh) * | 2019-11-19 | 2020-03-24 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
CN111930701A (zh) * | 2020-08-13 | 2020-11-13 | 工银科技有限公司 | 日志结构化处理方法及装置 |
CN111930701B (zh) * | 2020-08-13 | 2023-08-18 | 中国工商银行股份有限公司 | 日志结构化处理方法及装置 |
CN112000806A (zh) * | 2020-08-25 | 2020-11-27 | 携程旅游信息技术(上海)有限公司 | 异常日志监控分析方法、***、设备及存储介质 |
CN112560407A (zh) * | 2020-12-18 | 2021-03-26 | 上海中畅数据技术有限公司 | 一种在线提取计算机软件日志模板的方法 |
CN113064869A (zh) * | 2021-03-23 | 2021-07-02 | 网易(杭州)网络有限公司 | 日志处理方法、装置、发送端、接收端设备及存储介质 |
CN113064869B (zh) * | 2021-03-23 | 2023-06-13 | 网易(杭州)网络有限公司 | 日志处理方法、装置、发送端、接收端设备及存储介质 |
CN114818643A (zh) * | 2022-06-21 | 2022-07-29 | 北京必示科技有限公司 | 一种保留特定业务信息的日志模板提取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101950293B (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101950293B (zh) | 日志萃取方法及装置 | |
CN109739849B (zh) | 一种数据驱动的网络敏感信息挖掘与预警平台 | |
US8671111B2 (en) | Determination of rules by providing data records in columnar data structures | |
US9836541B2 (en) | System and method of managing capacity of search index partitions | |
CN106528717A (zh) | 数据处理方法和*** | |
CN105701176A (zh) | 一种数据整合的方法及装置 | |
CN103559185B (zh) | 试验数据文档解析入库方法 | |
CN105912594B (zh) | Sql语句处理方法和*** | |
CN106055621A (zh) | 一种日志检索方法及装置 | |
CN111881447B (zh) | 恶意代码片段智能取证方法及*** | |
US9465694B2 (en) | Method and apparatus for recovering partition based on file system metadata | |
CN111339293A (zh) | 告警事件的数据处理方法、装置和告警事件的分类方法 | |
CN112463553A (zh) | 一种基于普通告警关联分析智能告警的***与方法 | |
CN114817243A (zh) | 数据库联合索引的建立方法、装置、设备及存储介质 | |
CN103034656A (zh) | 章节内容分层方法和装置、文章内容分层方法和装置 | |
CN109471934B (zh) | 基于互联网的金融风险线索发掘方法 | |
CN109558735A (zh) | 一种基于机器学习的恶意程序样本聚类方法及相关装置 | |
Cherkasova et al. | On net modeling of industrial size concurrent systems | |
KR20130013510A (ko) | 의미론적 특허 유사성을 이용한 특허 네트워크 분석 시스템 및 이를 이용한 특허 네트워크 분석 방법 | |
US20150082142A1 (en) | Method for storing and applying related sets of pattern/message rules | |
CN111026940A (zh) | 一种面向电网电磁环境的网络舆情及风险信息监测***、电子设备 | |
Trieschnigg et al. | Hierarchical topic detection in large digital news archives: exploring a sample based approach | |
CN113434273B (zh) | 数据处理方法、装置、***及存储介质 | |
CN112486922B (zh) | 基于结构链逆向的内存碎片文件重建方法及*** | |
KR101718599B1 (ko) | 소셜 미디어 데이터 분석 시스템 및 이를 이용한 소셜 미디어 데이터 분석 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |