在线日志解析方法:Drain,Logram

(一)Drain

Drain: An Online Log Parsing Approach with Fixed Depth Tree
http://jiemingzhu.github.io/pub/pjhe_icws2017.pdf

典型的日志解析器[4]、[15]、[16]、[17]将日志解析视为一个聚类问题,它们将具有相同日志事件的原始日志消息聚类到一个日志组。

Drain使用了一个固定深度的解析树,它编码了专门设计的解析规则,指导日志组的搜索过程。

每个日志组有两个部分:日志事件和日志ID。日志事件是最能描述该组中的日志信息的模板,它由日志信息的常量部分组成。日志IDs记录了该组中的日志消息的ID。

所有叶子节点的深度都是一样的,并由一个预定义的参数depth固定。

为了避免树枝爆炸,我们采用了一个参数maxChild,它限制了一个节点的最大子女数。

Step 1: Preprocess by Domain Knowledge

预处理可以提高解析的准确性。提供基于领域知识的简单正则表达式,代表常用的变量,如IP地址和块ID。

Step 2: Search by Log Message Length

假设:具有相同日志事件的日志消息可能会有相同的日志消息长度。根据预处理过的日志消息的日志消息长度,选择通往第1层节点的路径。

Step 3: Search by Preceding Tokens

假设:日志信息开头位置的tokens更有可能是常量。将日志信息中的前(depth − 2)个tokens编码为搜索规则。Drain可以通过更大的深度设置考虑更多前面的tokens。为了避免分支爆炸,我们在这一步只考虑不含数字的tokens。如果一个token包含数字,它将匹配一个特殊的内部节点 “*”。参数maxChild,它限制了一个节点的最大子女数。如果一个节点已经有了maxChild个子节点,任何不匹配的tokens将在其所有子节点中匹配特殊的内部节点 “*”。

Step 4: Search by Token Similarity

此时,Drain 已经遍历到一个叶子节点,其中包含一个日志组列表。
从日志组列表中选择最合适的日志组。

在找到具有最大simSeq的日志组后,我们将其与预定义的相似度阈值st进行比较。

Step 5: Update the Parse Tree

(1) 返回一个合适的日志组:Drain会扫描日志信息和日志事件中相同位置的tokens。如果这两个tokens相同,我们就不修改该token位置的token。否则,我们通过通配符(即*)更新日志事件中该token位置的token。
(2) 找不到合适的日志组:Drain从根节点遍历到应该包含新日志组的叶子节点,并沿着路径相应地添加缺少的内部节点和叶子节点。

(二)Logram

Logram: Efficient Log Parsing Using n-Gram Dictionaries
https://arxiv.org/pdf/2001.03038.pdf

Logram使用字典来存储日志中n-grams的频率,并利用n-gram字典来提取日志中的静态模板和动态变量。我们的直觉是,频繁的n-grams更可能代表静态模板,而罕见的n-grams更可能是动态变量。n-gram字典可以有效地构建和查询,即复杂度分别为O(n)和O(1)。

Step 1: Generating an n-gram dictionary

通过独立处理每一条日志信息来生成字典的缺陷:1)一些日志事件可能跨越多行;2)一条日志消息的开头和结尾的tokens可能不像其他tokens那样位于相同数量的n-grams中
故,在一条日志信息的开头和结尾tokens处,我们也分别包括前一条日志信息的结尾和后一条日志信息的开头

Step 2: Parsing log messages using an n-gram dictionary

(1)Identifying n-grams that may contain dynamic variables
如果一个n-gram的出现次数小于自动确定的阈值(见第4.3.3节),我们认为这个n-gram可能包含一个由动态变量产生的token。在收集了所有低出现率的n-grams之后,我们将这些n-grams分别转化为n-1-grams,并检查每个n-1-gram的出现次数。递归地应用这个步骤,直到我们有一个低出现率的2-grams列表。
(2)Identifying dynamically and statically generated tokens
来自动态变量的token必须位于两个低出现的2-grams中(即,一个以动态变量结束,一个以动态变量开始)。
(3)Automatically determining the threshold of n-gram occurrences
测量每个n-gram的出现次数。然后,对于每个发生值,我们计算出具有确切发生值的n-grams的数量。
使用loess函数[62]来平滑Y值,并计算Y值对X值的导数。得到导数后,我们使用Ckmeans.1d.dp[63],一种一维聚类方法,找到一个断点,将导数分成两组,即一组为静态n-grams,另一组为动态n-grams。断点将被自动确定为阈值。

MIGRATING Logram TO AN ONLINE PARSER

在线解析:读取第一条日志消息时,字典为空(即所有 n-gram 的出现次数为零),因此 Logram 将所有tokens解析为动态变量。然后,Logram 使用从第一条日志消息中提取的 n-grams创建字典。之后,当读取随后的每条日志消息时,Logram 使用现有的 n-gram 字典解析日志消息。然后,Logram 使用日志消息中的tokens即时更新现有的 n-gram 字典。
Logram 会更新 n-gram 字典并不断解析传入的日志,直到处理完所有日志。

(三)Drain,Logram对比

Accuracy

分组的准确性有一个局限性,即它只确定来自相同事件的日志是否被分组在一起;而日志中的静态文本和动态变量可能无法被正确识别。
当且仅当一条日志消息的所有静态文本和动态变量都被正确识别时,它才被认为是正确解析的。

Logram can achieve the best or over 0.9 accuracy in parsing 12 out of the 16 log datasets.
bad cases:Mis-split tokens. Pre-processing errors. Frequently appearing dynamic variables.

Efficiency

Logram在效率上比最快的最先进的日志解析器高出1.8到5.1倍。

在线日志解析方法:Drain,Logram相关推荐

  1. Spell 基于最长公共子序列的在线日志解析方法

    文章目录 01 日志模板挖掘 02 基于 LCS 的日志解析流程 2.1 日志键匹配查找 2.2 拆分与合并处理 2.2.1 拆分过程 2.2.2 合并过程 03 匹配查找优化 3.1 前缀树预过滤 ...

  2. SPINE:高拓展性、用户友好的自动化日志解析新神器

    编者按:在计算机系统与软件的实践和研究中,可靠性是至关重要且经久不衰的课题.如何自动化地分析日志所记录的系统状态并让数据"说话" ,受到了广泛研究.日志解析是自动化日志分析中的关键 ...

  3. mysql.err日志分析_Mysql日志解析

    转载:https://www.cnblogs.com/Fly-Wind/p/5674382.html 修改Mysql配置 Mysql配置地址为: C:\Program Files (x86)\MySQ ...

  4. Spark HistoryServer日志解析清理异常

    Spark HistoryServer日志解析&清理异常 一.背景介绍 用户在使用 Spark 提交任务时,经常会出现任务完成后在 HistoryServer(Spark 1.6 和 Spar ...

  5. 在线日志文件丢失的恢复(笔记)

    在线日志文件丢失有二种情况,一是丢失非当前日志,这时可以通过 SQL>alter database clear logfile group 3;[已归档] 或 SQL>alter data ...

  6. 自动生成web服务器日志解析规则

    2019独角兽企业重金招聘Python工程师标准>>> 当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂,企业需要投入专业的数据清洗人员编写数据清洗规则(解析规则或者解析 ...

  7. FTP服务器日志解析

    2019独角兽企业重金招聘Python工程师标准>>> FTP服务器日志解析 FTP是老牌的文件传输协议,在网络中应用非常广泛.本节就Vsftp服务器的日志进行重点讨论,在本书的FT ...

  8. 日志记录到字段变更_Wal日志解析工具开源: Walminer

    作者简介 李传成: 瀚高软件内核研发工程师,主要研究方向为数据库的备份和恢复,对wal日志的原理和应用有较深的理解.自研了wal日志解析工具walminer.pg块恢复工具pg_lightool. 一 ...

  9. 解析mysqlbinlog日志_关于mysql-binlog日志解析框架

    欢迎广大码农爱好者向我推荐框架,我会择其精要.有趣者分享给大家. 今天下午,有同学献出了一款软件,说是海外澳洲番邦向朕进贡的,于是品尝了一番. 软件名称:mysql-binlog-connector ...

  10. ofd转成html,基于HTML5的OFD文件在线显示的方法以及装置与流程

    技术特征: 1.一种基于HTML5的OFD文件在线显示的方法,其特征在于:包括如下步骤: 步骤1.服务器端将OFD文件压缩包进行解压,并将解压后得到的OFD文档目录结构映射至HTML5客户端的URL: ...

最新文章

  1. mc幻想乡java_我的世界1.7.2幻想乡整合版下载_我的世界1.7.2东方幻想乡下载_游戏之家...
  2. oracle 只读同名词,Oracle创建只读用户,授予视图/同义词/会话权限
  3. 只做决定的架构师会成为团队的瓶颈!
  4. 蓝桥杯_风险度量(一题多解)
  5. 程序员写了段代码,自称完美! 网友: 我现在还在改你的Bug
  6. linux下rpm方式安装mysql(2012-5-12)
  7. 计算机操作系统(7):进程的基本概念
  8. 迅雷游戏盒子下载|迅雷游戏盒子下载
  9. 使用Beautifulsoup去除特定标签
  10. 【POJ2386】Lake Counting
  11. json 和 数组的区别
  12. 美国能限制linux内核,美国大学教授「故意」向 Linux 提交含 Bug 代码,内核管理员“封杀”明尼苏达大学...
  13. pajek的net文件格式
  14. Redis入门指南-2
  15. 扫描枪取消回车二维码_扫码枪设置自动回车方法步骤,条码扫描枪不自动回车怎么办...
  16. SpringBoot关闭druid的页面和添加密码验证
  17. 完美移除ESXI 7.0默认120G虚拟闪存,并支持自由调整,释放被占用的磁盘空间
  18. pdf文件太大怎么变小,如何压缩pdf大小
  19. python运行代码不成功_【Python】程序在运行失败时,一声不吭继续运行pass
  20. 大年初三,字节跳动“线上免费春节档”电影再升级,13部影片登场

热门文章

  1. QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
  2. (1)统一流程管理平台--前言
  3. 汶川大地震引起最近全国人民心理一定程度的恐慌问题
  4. word文档通配符换行_Word效率指南(二)
  5. 关于多元正态分布向量表示的Notation问题
  6. 证书链——区块链电子证书系统
  7. 服务器iis的作用,Web 服务器 (IIS) 概述
  8. 大一结业项目之一(C#晨曦超市管理系统 )
  9. ubuntu20.04安装qq和微信
  10. ARP命令详解和解决ARP攻击