CN109189840B - 一种流式在线日志解析方法 - Google Patents
一种流式在线日志解析方法 Download PDFInfo
- Publication number
- CN109189840B CN109189840B CN201810805285.4A CN201810805285A CN109189840B CN 109189840 B CN109189840 B CN 109189840B CN 201810805285 A CN201810805285 A CN 201810805285A CN 109189840 B CN109189840 B CN 109189840B
- Authority
- CN
- China
- Prior art keywords
- log
- type
- types
- logs
- partition
- 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
Links
Images
Abstract
本发明公开了一种流式在线日志解析方法,该方法利用分区的思想将日志按照其长度进行分区,即同一长度的日志被分配到同一个分区中;日志分区后,快速匹配阶段通过求取日志与日志类型的交集是否满足一个阈值,来判断日志是否属于当前的日志类型;快速匹配到日志所属的日志类型后,日志类型提取阶段通过求取日志与日志类型的最长公共子序列来提取出日志类型与日志的参数。本发明可有效解析系统日志,将日志由非结构化的文本解析为结构化的日志类型,结果可用于日志的异常检测,方法简单有效。
Description
技术领域
本发明属于系统日志安全监测领域,涉及一种流式在线日志解析方法。
背景技术
系统日志由非结构化文本到结构化日志类型的解析,在系统日志安全监测、网络异常检测等领域具有重要的应用,根据日志解析的结果,可以明确了解系统中程序的运行顺序,进一步可以用于系统中程序工作流的构建与异常的检测;经典的日志解析方法可以较有效地解析日志,目前已有的方法可分为两类:离线方法与在线方法:离线即首先需要收集一段时间内产生的日志,一次性对这些日志进行解析,如果有新产生的日志需要解析,那么就需要重新训练;在线方法可不需要一次性载入所有需要解析的日志,而是一条一条地对日志以流式的方式进行处理。
Tang方法(参考Tang的方法:L.Tang,T.Li,and C.-S.Perng,“Logsig:Generatingsystem events from raw textual logs,”in Proceedings of the 20th ACMinternational conference on Information and knowledge management.ACM,2011,pp.785-794.)提出了一种离线解析日志的方法,该方法首先利用聚集技术根据日志的距离分为不同的组,然后日志类型从这些不同的组中产生。此方法需要日志类型的个数作为输入来进行日志解析,然而使用者大多很难知道日志文件中含有的日志类型的个数。Makanju方法(参考Makanju的方法:A.A.Makanju,A.N.Zincir-Heywood,and E.E.Milios,“Clustering event logs using iterative partitioning,”in Proceedings of the15th ACM SIGKDD international conference on Knowledge discovery and datamining.ACM,2009,pp.1255-1264.)也提出了一种离线日志解析方法,该方法首先会计算日志中每一个位置出现的词的频率,然后日志类型中的词语候选词将从最频繁出现的词中选出。以上两种都是离线的日志解析方法,它们都需要将所有的日志一次性载入内存,随着系统日志规模的不断增长,它们会受到单台计算机内存的限制。
Du方法(参考Du的方法:M.Du and F.Li,“Spell:Streaming parsing of systemevent logs,”in Data Mining(ICDM),2016IEEE 16th International Conferenceon.IEEE,2016,pp.859-864.)提出了一种流式的日志解析方法,该方法利用最长公共子序列来求取日志类型。然而在此方法中,每次处理一条日志时,需要将此日志与所有现有的日志类型进行一一求取最长公共子序列(时间复杂度为O(n2)),随着解析工作的进行,日志类型会不断增加,所以该算法十分耗时。He方法(参考He的方法:P.He,J.Zhu,Z.Zheng,andM.R.Lyu,“Drain:An online log parsing approach with fixed depth tree,”in WebServices(ICWS),2017IEEE International Conference on.IEEE,2017,pp.33-40.)提出了一种基于固定深度树的在线日志解析方法,该方法通过日志的首个词的不同将其分配至不同节点,然后每次有新的日志,直接进行匹配。然而此方法在准确率上还需要有很大提升,而且树的深度作为一个参数往往使用者很难确定如何设置。
发明内容
为克服现有技术中的问题,本发明的目的在于提供一种流式在线日志解析方法。
为实现上述目的,本发明的技术方案如下:
一种流式在线日志解析方法,包括如下步骤:
步骤1:对日志文本进行预处理;
步骤2:匹配分区:根据日志mi的长度来搜索是否存在匹配的分区P,如果有,则进行步骤3,如果无,则创建一个新的分区Pi,当前日志处理完毕,进行下一条日志的处理;
步骤3:在分区Pi中预匹配日志mi的日志类型tki:将日志mi依次与分区Pi中的日志类型ti求取交集,如果两者的交集长度满足阈值ω,则进行步骤4,如果日志mi与分区Pi中的每一个日志类型都求取交集,并且所有的交集长度都不满足阈值ω,则日志mi被认为是Pi中的一种新的日志类型,直接将日志mi加入分区Pi中,当前日志处理完毕,进行下一条日志的处理;
步骤4:提取日志mi的日志类型与参数:求取日志mi与日志类型tki的最长公共子序列,则最长公共子序列为日志mi的常量部分,日志mi中剩余部分为变量部分;之后跳转步骤1,顺序执行直至所有日志处理完毕,执行步骤5);
步骤5:合并所有分区中的日志类型:一共有n个分区P1-Pn,依次遍历,将所有分区中的日志类型与日志类型集中的日志类型进行比较与添加之后,日志类型集包含了此日志文件所有的日志类型。
本发明进一步的改进在于,步骤1)的具体过程为:去掉日志文本中为变量部分的列,其中,常量部分与变量部分的定义如下:日志中能够作为日志类型的部分被称为常量部分,不能够作为日志类型的部分作为参数,称为变量部分。
本发明进一步的改进在于,步骤3)中,阈值ω的定义如下:
其中,
max(|m|)是一个日志数据集中最长的日志的长度。
本发明进一步的改进在于,当x=2.64时,tanh(x)≈1,因为日志的长度都大于2.64,所以将tanh(x)进行横向拉伸,以达到根据日志的长度来进行非线性变换阈值ω的目的;最后,tanh(x)的最大值被设置为
本发明进一步的改进在于,步骤5的具体过程为:每次从分区Pi中取出一个日志类型tki,然后用日志类型tki与日志类型集中的日志类型依次求交集;然后判断求出的交集是否等于当前求交集的两个日志类型之中较短的一个,如果是,则说明这两个日志类型属于同一个类型,合并为一个;如果遍历完日志类型集中已有的所有日志类型,没有与日志类型tki属于同一类型的日志类型,那么日志类型tki作为一个新的日志类型加入到日志类型集中。
本发明和现有技术相比较,具有如下有益效果:本发明利用分区的思想将日志按照其长度进行分区,即同一长度的日志被分配到同一个分区中;日志分区后,快速匹配阶段通过求取日志与日志类型的交集长度是否满足一个阈值,来判断日志是否属于当前的日志类型;快速匹配到日志所属的日志类型后,日志类型提取阶段通过求取日志与日志类型的最长公共子序列来提取出日志类型与日志的参数。本发明可有效解析系统日志,将日志由非结构化的文本解析为结构化的日志类型,结果可用于日志的异常检测,方法简单有效。本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时时间效率的比较,每个数据集分别随机抽取20%、40%、60%、80%的日志,与每个完整的数据集构成共25个不同规模的数据集。由比较结果可知,本发明方法可取得与上述方法相比更高的效率,且随着数据集规模的增长时间效率呈线性增长趋势。所以,本发明为一种面向不同系统日志的由非结构化日志文本到结构化日志类型解析的在线的快速鲁棒方法,相比于已有经典的日志解析方法,本算法解析准确率高,速度快,对不同系统的日志鲁棒,方法简单有效。
附图说明
图1为日志解析总览图。
图2为tanh(x)函数。
图3(a)为非线性阈值在BlueGene/L上的表现。
图3(b)为非线性阈值在HDFS上的表现。
图3(c)为非线性阈值在HPC上的表现。
图3(d)为非线性阈值在Proxifier上的表现。
图3(e)为非线性阈值在Zookeeper上的表现。
图4为本发明方法(Slop)与IPLoM方法、Spell方法、Drain方法解析日志后生成日志类型数与标准结果的比较结果。
图5(a)为本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时在BlueGene/L数据集上时间效率的比较结果。
图5(b)为本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时在HDFS数据集上时间效率的比较结果。
图5(c)为本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时在HPC数据集上时间效率的比较结果。
图5(d)为本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时在Proxifier数据集上时间效率的比较结果。
图5(e)为本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时在Zookeeper数据集上时间效率的比较结果。
图6为本发明的流程图。
具体实施方式
下面结合附图对本发明做详细描述。
本发明中由非结构化日志文本解析为结构化日志类型。
参见图6,本发明包括以下步骤:
1)对日志文本进行预处理(去掉时间戳等一定为参数的列);
常量部分与变量部分的定义如下:
日志中可以作为日志类型的部分被称为常量部分,不可以作为日志类型的部分作为参数,称为变量部分。如图1所示:
图1中日志1-6分别为6条来自不同系统的日志,日志类型1-4分别为对应于日志1-6的日志类型。其中非斜体部分为常量部分,即日志类型;斜体部分为变量部分,即参数。
2)匹配分区:根据日志mi的长度来搜索是否存在匹配的分区P,如果有,则进行步骤3),如果无,则创建一个新的分区Pi,当前日志处理完毕,进行下一条日志的处理;
3)在分区Pi中预匹配日志mi的日志类型tki:将日志mi依次与分区Pi中的日志类型ti求取交集,如果两者的交集长度满足阈值ω,则进行步骤4),如果日志mi与分区Pi中的每一个日志类型都求取交集,并且所有的交集长度都不满足阈值ω,则日志mi被认为是Pi中的一种新的日志类型,直接将日志mi加入分区Pi中,当前日志处理完毕,进行下一条日志的处理;
此步骤中,阈值尤为重要,在此举例说明:如图1中,日志3与日志4的交集为“INFO”,长度为1。如果没有阈值控制交集的长度,接下来直接进行日志类型的提取,那么日志类型就会是“INFO”,实际上日志3与日志4并不属于同一日志类型。
其中,阈值ω的定义如下:
其中,
tanh(x)与修改后的tanh(x)图像如图2所示,max(|m|)是一个日志数据集中最长的日志的长度;当x=2.64时,tanh(x)≈1,因为日志的长度一般都大于2.64,所以需要将tanh(x)进行横向拉伸,以达到根据日志的长度来进行非线性变换阈值ω的目的。最后,tanh(x)的最大值被设置为通过观察,所有的系统日志中一定会有常量部分,而常量部分的长度在附近,不会存在全部为参数的日志,所以最大值为1是不合理的。
对多个系统的日志(BlueGene/L、HDFS、HPC、Proxifier和Zookeeper等)进行观察,发现较短的日志参数较多的概率会比较大,对不同系统的日志长度与参数个数的统计如图3(a)、图3(b)、图3(c)、图3(d)和图3(e)所示,从图3(a)、图3(b)、图3(c)、图3(d)和图3(e)中可以看出,每一个系统的日志类型与日志长度之间的关系具有不确定性,但总体都趋向于日志较短时参数较多这样的规律,所以阈值的设定需要根据日志的长度来实现非线性的变换以适应这种规律。在采用tanh(x)作为主体并针对具体问题进行修改后,发现“非线性阈值”恰好处于“日志类型”的下方,即可以很合适地满足日志类型的提取。只有一个特殊点:在HPC中日志长度为40时,非线性阈值处于日志类型的下方,但经过统计,这类日志在整个HPC数据集中只出现了一次,所以非线性阈值是可以很好适应不同系统日志的。
4)提取日志mi的日志类型与参数:求取日志mi与日志类型tki的最长公共子序列(LCS),则LCS为日志mi的日志类型(常量部分),日志mi中剩余部分为参数(变量部分)。之后跳转步骤1),顺序执行直至所有日志处理完毕,最后执行步骤5);
5)合并所有分区中的日志类型:一共有n个分区P1-Pn,依次遍历;每次从分区Pi中取出一个日志类型tki,然后用日志类型tki与日志类型集(一开始为空)中的日志类型依次求交集;然后判断求出的交集是否等于当前求交集的两个日志类型之中较短的一个,如果是,则说明这两个日志类型属于同一个类型,可以合并为一个。如果遍历完日志类型集中已有的所有日志类型,没有与日志类型tki属于同一类型的日志类型,那么tki就作为一个新的日志类型加入到日志类型集中;
所有分区中的日志类型与日志类型集中的日志类型进行完以上比较与添加之后,日志类型集就包含了此日志文件所有的日志类型。
本发明的有益效果是:
相比于已有经典的日志解析方法,本算法解析准确率高,速度快,对不同系统的日志鲁棒,方法简单有效。
本发明的算法在惠普工作站上基于Python 2.7实现,工作站拥有2.0GHZ AMD处理器及128.0G内存。实验数据选取了五种不同类型的日志:BlueGene/L数据集,HDFS数据集,HPC数据集,Proxifier数据集,Zookeeper数据集。
在定量比较日志解析准确率结果时,本发明采用相对于日志是否被解析为正确的日志类型的查准率(precision)和查全率(recall)作为衡量标准。
查准率precision和查全率recall的表达式分别为:
其中TP(True Positive)代表属于同一日志类型的日志全部正确地聚集在了一起;FP(False Positive)代表本不属于同一日志类型的日志被错误地聚集在了一起;FN(False Negative)代表本属于同一日志类型的日志被解析为了不同的日志类型。
根据查全率和查准率,可以计算相应的调和均值(F-Measure):
调和均值作为综合性质的评价标准,兼顾了查全率和查准率的影响因素,可用于统一衡量最终的检测结果。
比较的结果说明了相比其它四种算法,本发明算法具有更好的可靠性和鲁棒性。
图4展示了本发明方法(Slop)与IPLoM方法、Spell方法、Drain方法解析日志后生成日志类型数与标准结果的比较:纵轴为各方法产生的日志类型数(nMT)与标准结果数(nG)做差的绝对值。由比较结果可知,本发明的方法最接近基准线,可取得与上述方法相比更为准确的日志类型个数。
表1展示了本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志后调和均值的比较。
表1五种方法的准确率比较
由表1的比较结果可知,本发明方法可取得与上述方法相比更高的准确率。
图5(a)、图5(b)、图5(c)、图5(d)和图5(e)展示了本发明方法与LogSig方法、IPLoM方法、Spell方法、Drain方法解析日志时时间效率的比较,每个数据集分别随机抽取20%、40%、60%、80%的日志,与每个完整的数据集构成共25个不同规模的数据集。由比较结果可知,本发明方法可取得与上述方法相比更高的效率,且随着数据集规模的增长时间效率呈线性增长趋势。
Claims (5)
1.一种流式在线日志解析方法,其特征在于:包括如下步骤:
步骤1:对日志文本进行预处理;
步骤2:匹配分区:将日志按照其长度进行分区,即同一长度的日志被分配到同一个分区中,根据日志mi的长度来搜索是否存在匹配的分区P,如果有,则进行步骤3,如果无,则创建一个新的分区Pi,当前日志处理完毕,进行下一条日志的处理;
步骤3:在分区Pi中预匹配日志mi的日志类型tki:将日志mi依次与分区Pi中的日志类型ti求取交集,如果两者的交集长度满足阈值ω,则进行步骤4,如果日志mi与分区Pi中的每一个日志类型都求取交集,并且所有的交集长度都不满足阈值ω,则日志mi被认为是Pi中的一种新的日志类型,直接将日志mi加入分区Pi中,当前日志处理完毕,进行下一条日志的处理;
步骤4:提取日志mi的日志类型与参数:求取日志mi与日志类型tki的最长公共子序列,则最长公共子序列为日志mi的常量部分,日志mi中剩余部分为变量部分;之后跳转步骤1,顺序执行直至所有日志处理完毕,执行步骤5;
步骤5:合并所有分区中的日志类型:一共有n个分区P1-Pn,依次遍历,将所有分区中的日志类型与日志类型集中的日志类型进行比较与添加之后,日志类型集包含了此日志文件所有的日志类型。
2.根据权利要求1所述的一种流式在线日志解析方法,其特征在于:步骤1的具体过程为:去掉日志文本中为变量部分的列,其中,常量部分与变量部分的定义如下:日志中能够作为日志类型的部分被称为常量部分,不能够作为日志类型的部分作为参数,称为变量部分。
5.根据权利要求1所述的一种流式在线日志解析方法,其特征在于:步骤5的具体过程为:每次从分区Pi中取出一个日志类型tki,然后用日志类型tki与日志类型集中的日志类型依次求交集;然后判断求出的交集是否等于当前求交集的两个日志类型之中较短的一个,如果是,则说明这两个日志类型属于同一个类型,合并为一个;如果遍历完日志类型集中已有的所有日志类型,没有与日志类型tki属于同一类型的日志类型,那么日志类型tki作为一个新的日志类型加入到日志类型集中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805285.4A CN109189840B (zh) | 2018-07-20 | 2018-07-20 | 一种流式在线日志解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805285.4A CN109189840B (zh) | 2018-07-20 | 2018-07-20 | 一种流式在线日志解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189840A CN109189840A (zh) | 2019-01-11 |
CN109189840B true CN109189840B (zh) | 2021-01-19 |
Family
ID=64936937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810805285.4A Active CN109189840B (zh) | 2018-07-20 | 2018-07-20 | 一种流式在线日志解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189840B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522900B (zh) * | 2020-03-18 | 2023-09-01 | 携程计算机技术(上海)有限公司 | 非结构化数据的自动解析方法、系统、设备及存储介质 |
CN111930592A (zh) * | 2020-07-20 | 2020-11-13 | 国网浙江省电力有限公司嘉兴供电公司 | 一种实时检测日志序列异常的方法和系统 |
CN113055171B (zh) * | 2021-03-30 | 2022-05-31 | 西安电子科技大学 | 基于的区块链的日志安全解析及存储方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265357A1 (en) * | 2005-04-26 | 2006-11-23 | Potts Matthew P | Method of efficiently parsing a file for a plurality of strings |
CN103218423B (zh) * | 2013-04-02 | 2016-09-07 | 中国科学院信息工程研究所 | 数据查询方法及装置 |
US9454590B2 (en) * | 2014-01-28 | 2016-09-27 | International Business Machines Corporation | Predicting validity of data replication prior to actual replication in a transaction processing system |
CN105630656B (zh) * | 2014-11-06 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 基于日志模型的系统健壮性分析方法及装置 |
-
2018
- 2018-07-20 CN CN201810805285.4A patent/CN109189840B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109189840A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888849B (zh) | 一种在线日志解析方法、系统及其电子终端设备 | |
CN107391353B (zh) | 基于日志的复杂软件系统异常行为检测方法 | |
CN105915555B (zh) | 网络异常行为的检测方法及系统 | |
CN109189840B (zh) | 一种流式在线日志解析方法 | |
EP4242878A1 (en) | Method and apparatus for training isolation forest, and method and apparatus for recognizing web crawler | |
CN106649831B (zh) | 一种数据过滤方法及装置 | |
CN112148772A (zh) | 告警根因识别方法、装置、设备和存储介质 | |
Folmer et al. | Detection of temporal dependencies in alarm time series of industrial plants | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN114389834B (zh) | 一种api网关异常调用识别的方法、装置、设备及产品 | |
Xiaolong et al. | RFC: a feature selection algorithm for software defect prediction | |
CN114780606B (zh) | 一种大数据挖掘方法及系统 | |
CN114817243A (zh) | 数据库联合索引的建立方法、装置、设备及存储介质 | |
CN116681350A (zh) | 智慧工厂故障检测方法及系统 | |
CN113535458B (zh) | 异常误报的处理方法及装置、存储介质、终端 | |
CN114465875B (zh) | 故障处理方法及装置 | |
CN106951548B (zh) | 基于rm算法提升特写词语搜索精度的方法及系统 | |
Laksono et al. | DDoS detection using CURE clustering algorithm with outlier removal clustering for handling outliers | |
CN114861858A (zh) | 一种路面异常数据检测方法、装置、设备及可读存储介质 | |
CN109981630B (zh) | 基于卡方检验和ldof算法的入侵检测方法及系统 | |
CN114172705A (zh) | 基于模式识别的网络大数据分析方法和系统 | |
CN105260467A (zh) | 一种短信分类的方法及装置 | |
CN110275496A (zh) | 一种多时间序列时间戳对齐的方法和装置 | |
WO2021047576A1 (zh) | 日志记录处理方法、装置、设备及机器可读存储介质 | |
CN110781309A (zh) | 一种基于模式匹配的实体并列关系相似度计算方法 |
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 |