Page 321 - 《软件学报》2020年第10期
P. 321

王晓东  等:多节点系统异常日志流量模式检测方法                                                         3297


         事件日志数据的特殊属性,因此比 SLCT 更接近地反映 Apriori 算法.SLCT 和 Loghound 两种算法都将那些不匹
                                                   [8]
         配任何频繁模式的日志分类为离群值.Makanju 等人 引入了 IPLoM 算法,这是一种用于挖掘事件日志簇的新
         算法.与 SLCT 不同的是,IPLoM 是一种层次聚类算法,它以整个事件日志作为单个分区开始,并在 3 个步骤中迭
         代分割分区.与 SLCT 类似,IPLoM 将事件日志行中的位置视为单词,因此对单词位置的移位敏感.由于其分层
         性,IPLoM 不需要支持阈值,而是需要其他一些参数(如分区支持阈值和簇优度阈值),这些参数对分区的划分进
         行了细粒度的控制.IPLoM 相对于 SLCT 的一个优点是能够使用通配符尾部(例如 Interface * *)来检测日志行模
         式,其作者将 IPLoM 算法与 SLCT 和 LogHound 算法进行比较,并得出其效果优于上述两种聚类算法的结论.此
                            [9]
         后,Vaarandi 和 Pihelgas 提出了 logcluster 算法,该算法对于文本事件日志进行数据聚类和日志行模式挖掘,并
         修复现有聚类算法的一些缺点.而本文使用基于字符匹配的分类算法,针对于国家高性能计算环境的系统日志
         进行分类,代码压缩率和后续特征创建都显示出了不错的效果.
             (2)  日志后验分析
             一些学者在分析日志寻找相关异常方面进行了研究,比如,Xu 等人                     [10] 通过源代码匹配日志的格式找出相关
         变量,通过词袋模型提取对应日志变量的特征,然后使用这些特征,通过主成分分析方法降维,根据主成分分析
         的最大可分性检测异常的日志文件,最后使用决策树可视化该结果.Fronza 等人                        [11] 使用随机索引为代表的操作
         序列,根据其上下文为每个日志中的操作特征化,然后使用支持向量机关联序列到故障或无故障的类别上,以此
         来预测系统故障.Weiss 等人       [12] 研究了从有标签特征的事件序列中预测稀少事件的问题,基于遗传算法的机器
         学习系统,能够在预测稀有任务上达到比较好的结果.Yamanishi 和 Maruyama                 [13] 提出了一种新的动态系统日志
         挖掘方法,以更高的置信度检测故障症状,并发现计算机设备间的连续报警模式.Yuan、Mai 和 Xiong                            [14] 提出了
         一个名为 Sher-Log 的工具,它利用运行时日志提供的信息来分析源代码,以推断在失败的生产运行期间必须或
         可能发生的事情.它不需要重新执行程序,也不需要知道日志的语义.它推断关于执行失败的控制和数据值信
         息.Peng、Li 和 Ma [15] 应用文本挖掘技术将日志文件中的消息分类为常见情况,通过考虑日志消息的时间特性来
         提高分类的准确性,并利用可视化工具来评估和验证用于系统管理的有趣的时间模式.Wang                              [16] 也使用机器学习
         方法对日志进行后验分析,但是主要突出的是日志线上的可视化展示.本文使用文献[10]中描述的异常检测方
         法,但是输入的日志类别对应于基于字符匹配生成的分类结果,同时,研究对象为日志类型的有序排列,在得到
         未知的异常日志流量模式上更有优势.
             (3)  日志类型序列度量的研究
             日志类型序列的分类问题,实际上可以归类为字符匹配模式.在字符匹配中,为了判别两个序列的相似度,
         Hamming [17] 在对两个字符串之间进行比较时使用了最直接的一对一匹配法,以两个序列匹配的字符数目作为
         两个序列之间的相似度衡量指标.Damerau 和 Levenshtein           [18] 使用两个序列之间的最小操作数(包括序列的插
         入、删除、替换或两个相邻字符之间的转换)作为两个序列之间的相似度衡量指标.在序列对比方面,
         Needleman [19] 和 Smith [20] 分别对序列进行全局对比和局部对比,用以得到最符合两个序列的全局序列和局部序
         列.本文在选择日志序列特征时考虑到了字符串序列的特点.根据 Seker                      [21] 在字符串匹配算法中对人名字符度
         量上选择的方法,即前 K 个频繁出现次数的字母项和其对应数量作为识别序列的关键要素.将不同类型的日志
         抽象为不同的字符,根据其特点实现自适应 K 值的挑选,在日志类型序列的比较上更为适合.
         2    背   景


         2.1   系统环境日志前期分类研究
             日志预处理需要完成的主要任务是如何将日志内容压缩并分类,这样做既可以减少数据量,又有利于后续
         使用相关机器学习算法进行分析.我们在前期工作中,使用了一种基于字符匹配的方法对系统日志的分类问题
         进行研究,主要方法是根据字符匹配原则对系统日志进行分类                       [22] .日志模式匹配的核心思想是字符一一对应,
         即:将整体匹配的字符数与总字符数进行比值,并将得到的数值与设定的阈值进行对比,如果结果超过设定的阈
         值,则将这两行日志定义为一类           [22] .
   316   317   318   319   320   321   322   323   324   325   326