【日志解析】【启发式】Drain:一种用于日志解析的深度解析树

news2024/11/26 2:30:27

Drain:An Online Log Parsing Approach with Fixed Depth Tree

文章目录

    • Drain:An Online Log Parsing Approach with Fixed Depth Tree
      • 1 论文出处
      • 2 背景
        • 2.1 背景介绍
        • 2.2 针对问题
        • 2.3 创新点
      • 3 主要设计思路
        • 3.1 Drain整体结构
        • 3.2 具体步骤
      • 4 实验设计
      • 5 个人总结

1 论文出处

  • 会议/期刊:ICWS(International Conference on Web Services)
  • 级别:CCF-B
  • 时间:2017

2 背景

2.1 背景介绍

  如今,越来越多的开发人员利用现有的Web服务来构建他们自己的系统,在此背景下,基于日志分析的服务管理技术,即利用服务日志来实现自动或半自动的服务管理,已经得到了广泛的研究。因此,应用数据挖掘模型来了解系统行为的日志分析技术被广泛应用于服务管理。

  在这些日志分析技术中使用的大多数数据挖掘模型都需要结构化的输入(例如,一个事件列表或一个矩阵)。但是,原始日志消息通常是非结构化的,因为开发人员可以在源代码中编写自由文本的日志消息。因此,日志分析的第一步是日志解析,其中非结构化日志消息被转换为结构化事件。非结构化日志消息,如下例所述,通常包含各种形式的系统运行时信息:时间戳(记录事件发生的时间)、冗长级别(指示事件的严重性级别,例如,INFO)和原始消息内容(服务操作的自由文本描述)。

2.2 针对问题

  随着日志量的快速增加,在日志收集后使用所有现有日志的离线日志解析方法的模型训练变得非常耗时,而且大多数现有的日志解析方法都集中在离线的、日志的批处理上。

2.3 创新点

  提出了一种在线的流处理日志解析方法,利用深度解析树结构。

3 主要设计思路

3.1 Drain整体结构

  解析树中的每个路径都以一个叶节点结束,该节点存储一个日志组列表,为了简单起见,我们在这里只绘制一个叶节点。每个日志组都有两个部分:日志事件和日志ID。

  • 日志事件是最能描述该组中的日志消息的模板,该组由日志消息的常量部分组成。
  • 日志ID将记录此组中的日志消息的ID。

  解析树的一种特殊设计是,所有叶节点的深度都是相同的,并且由一个预定义的参数深度来固定。例如,图2中的叶节点的深度被固定为3。该参数限制了搜索过程中引流访问的节点数,大大提高了其效率。此外,为了避免树枝爆炸,我们采用了一个参数 ,它限制了一个节点的最大子节点的数量。

3.2 具体步骤

(1)按领域知识进行预处理

  Drain允许用户提供基于表示常用变量的域知识的简单正则表达式,如IP地址和块ID。然后,将删除由这些正则表达式从原始日志消息中匹配的标记。例如,图1中的块id将被“blk[0-9]+”删除。在此步骤中使用的正则表达式通常非常简单,并且一个数据集通常只需要少数这样的正则表达式。例如,在我们的计算部分中使用的数据集最多需要两个这样的正则表达式。

(2)按日志消息长度进行搜索

  解析树中的第一层节点表示日志消息具有不同日志消息长度的日志组,在此步骤中,Drain会根据预处理的日志消息的日志消息长度选择到第一层节点的路径。例如,对于日志消息“Receive from node 4”,将导线引流到图2中的内部节点“Length:4”。这是基于具有相同日志事件的日志消息可能具有相同的日志消息长度的假设。

(3)通过前面的标记进行搜索

  在此步骤中,Drain从步骤2中搜索的一个第一层节点遍历到一个叶节点。这一步是基于日志消息开始位置中的标记更有可能是常量的假设。具体来说,Drain通过日志消息开始位置的标记选择下一个内部节点。例如,对于日志消息“Receive from node 4”,排水管从第一层节点“Length:4”穿越到第二层节点“Receive”,因为在日志消息的第一个位置的标记是“Receive”。然后,Drain将遍历到与内部节点“Receive”链接的叶节点,并转到步骤4。

(4)按标记相似度搜索

  在此步骤中,Drain将从日志组列表中选择最合适的日志组。我们计算每个日志组的日志消息和日志事件之间的相似性simSeq。simSeq的定义如下:

第一张图片显示不出时显示的文字
第二张图片显示不出时显示的文字

  其中,seq1和seq2分别表示日志消息和日志事件;seq (i)为序列的第i个标记;n为序列的日志消息长度。我们将其与预定义的相似度阈值进行比较。如果simSeq远远大于这个阈值,则Drain将返回组作为最合适的日志组。否则,Drain将返回一个标志(例如,Python中的None),以表示没有合适的日志组。

(5)更新解析树

  如果在步骤4中返回了合适的日志组,则Drain系统将把当前日志消息的日志ID添加到返回的日志组中的日志ID中。此外,还将更新返回的日志组中的日志事件。如果排水无法找到合适的日志组,则会根据当前日志消息创建一个新的日志组,其中日志ID只包含日志消息的ID,而日志事件正是日志消息。例如,假设当前的解析树是下图左侧的树,并且会到达一个新的日志消息“Receive 120 bytes”。然后,Drain将把解析树更新到下图右侧的树。请注意,第三层中的新内部节点被编码为“*”,因为标记“120”包含数字。

4 实验设计

五种日志数据集,与四种传统方法(2在线2离线)比较,准确率、精度和召回,最后基于PCA+不同的解析方法进行异常检测比较

(1)准确率与运行时间

(2)不同规模对运行时间的影响

(3)异常检测结果(基于PCA)

5 个人总结

  Drain是一种在线日志解析方法,通过正则表达式可以将常量与变量分离,加以改进可以把参数提取出来,减少模板数量,同时本篇文章提供了五种日志的解析结果以及相应的设置参数,后期可以考虑用这种方法进行日志解析,并考虑如何引入参数来进行异常检测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm利用快捷键,快速注释多行代码的方法分享

最近在pycharm的新手学习群里,发现有些小伙伴依然在“手工”进行代码的注释,效率较低。 下面分享pycharm利用快捷键,快速注释多行代码的方法。可以帮助pycharm初学者加倍提升代码的注释效率。 代码注释快捷键 pycharm代码注释的快捷键为 c…

Anaconda 下载安装

文章目录 Anaconda下载Anaconda安装 Anaconda下载 进入官网 https://www.anaconda.com/ ,往下滑动,找到下载地址 2. 根据自己的系统,选择相应的安装包 直接从官网下载的话,下载速度较慢,可以使用国内镜像快速下载 百…

chatgpt赋能python:Python-基础知识:如何在Python中建立一个文件

Python-基础知识:如何在Python中建立一个文件 在Python中,创建文件是一个非常常见和重要的基础操作。Python提供了多种方法来创建文件,包括使用内置函数和第三方库。在本文中,我们将探讨如何使用Python建立一个文件。 使用内置函…

Linux启动nginx

Linux启动nginx 一、下载并解压安装包 1.首先我们需要安装nginx所需要的依赖 yum install pcre pcre-devel gcc openssl openssl-devel zlib zlib-devel2.在/usr/local/下创建文件nginx文件 mkdir /usr/local/nginx/3.进入/usr/local/nginx/ cd /usr/local/nginx/4.在网上…

TensorBoard快速入门(Pytorch使用TensorBoard)

文章目录 TensorBoard 简介TensorBoard 界面介绍TensorBoard 安装TensorBoard 运行Pytorch 使用 TensorBoardGoogle Colab中使用 TensorboardTensor折线图(Scalars) TensorBoard 简介 TensorBoard 是Google开发的一个机器学习可视化工具。其主要用于记录…

【1】如何安装和卸载tensorflow-CPU和GPU各版本-简单清晰版

文章目录 前言一、tensorflow-cpu指定版本的卸载二、tensorflow-gpu指定版本的卸载三、tensorflow-cpu指定版本的安装1、创建虚拟环境2、激活虚拟环境3、安装指定版本的tensorflow 四、tensorflow-gpu指定版本的安装安装CUDA安装cuDNN安装tensorflow_gpu-2.1.0测试tensorflow安…

SparkSQL优化

执行计划 查看执行计划 explain():只展示物理执行计划。(使用较多)explain(mode"simple"):只展示物理执行计划。explain(mode“extended”):展示物理执行计划和逻辑执行计划。explain(mode"codegen&q…

【数据结构与算法】线性表 01 链表

一、线性表1.1 概念与特点1.2 线性表的存储结构1.3 常见操作1.4 应用场景 二、链表2.1 链表简介2.2 单向链表(单链表)2.21 基本概念2.22 单链表基本操作2.23 C语言实现 2.3 双向链表2.4 循环链表 一、线性表 线性表是一种最基本、最简单的数据结构&…

Windows下安装及使用pip

首先查看Windows系统下是否安装有pip。终端执行下面命令: pip list # 查看Python中安装了哪些第三方库如果出现 ModuleNotFoundError: No module named ‘pip‘ 则说明系统里未安装成功pip。 那么可以先把pip安装上。安装pip可以选择 在线安装 或者 离线安装 两…

网络配置心得-从switch网络加速出发

背景: 在PC上玩战地5饱受外挂毒打,早想接触主机游戏又没有机会。最近突然有个好机遇带我入坑switch,那肯定得赶紧体验一下啊~~ 被安利的游戏是斯普拉遁3(splatoon3),是一款switch独占的第三人称射击游戏&a…

chatgpt赋能python:Python将yyyymmdd转换成yyyy-mm-dd的方法

Python将yyyymmdd转换成yyyy-mm-dd的方法 Python语言不仅易于学习,而且是一种功能强大的语言,广泛应用于数据分析、人工智能和Web开发等领域。在实际开发过程中,我们经常遇到需要将日期格式转换为其他格式的需求。本文将介绍如何使用Python将…

抖音账号矩阵系统|源码|开源代码独立部署难度

抖音账号矩阵系统,短视频账号矩阵系统源码, 短视频矩阵是一种常见的视频编码标准,它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。在本文中,我们将介绍短视频矩阵的原理和实现,并提供示例代码。 …

谈谈IPv6

最近,在B站看到一个讲解IPv6背景的视频比较热门,而评论区则对IPv6技术有许多误解,这也反映出大家或许对这一新的协议不够了解,本文就谈谈我们生活中的IPv6。 另:前述的B站视频地址电子监听、全国断网,棱镜…

Spring Boot 监听器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解 监听器的介绍 通过前面的几篇文章&#xff0c…

基于三种机器学习模型的岩爆类型预测及Python实现

写在前面 由于代码较多,本文仅展示部分关键代码,需要代码文件和数据可以留言 然而,由于当时注释不及时,且时间久远,有些细节笔者也记不清了,代码仅供参考 0 引言 岩爆是深部岩土工程施工过程中常见的一种地…

GitHub创建新的项目

想把最近自己做的一些东西整理一下上传到网上进行保存,然后就想到了Github,结果发现自己不会上传,所以去BiliBili大学学习了一下,一下内容主要参考《【程序员一定要掌握的技巧】使用Git上传本地代码到GitHub教程》。 使用Git上传本…

Win10每次开机鼠标桌面右键都会显示撤销删除解决方法

Win10每次开机鼠标桌面右键都会显示撤销删除解决方法分享。有用户电脑开机的时候,就会自动弹出撤销删除的窗口了。那么这个问题是怎么回事呢?接下来我们就一起来看看以下的详细操作方法教学吧。 情况一: 如果是联想,在联想管家把联…

Android 中的 NDK 到底是什么?(详细解析+案例实战)

NDK 提供了一系列的工具,帮助开发者快速开发 C (或 C )的动态库,并能自动将 so 和 java 应用一起打包成 apk;这些工具对开发者的帮助是巨大的 什么是 NDK ? Android 原生开发包 NDK(Native Delopment kits )将用于 Android 平台上…

Vue中process.env关键字,process.env.VUE_APP_BASE_API

1.process.env 是Node.js 中的一个环境 打开命令行查看环境: 2.process.env与Vue CLI 项目 Vue Cli 有以下三种运行模式 development 模式用于 vue-cli-service serve test 模式用于 vue-cli-service test:unit production 模式用于 vue-cli-service build 和 vue-c…

pip安装教程 python(针对于Windows系统)

1.什么是pip pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。 pip 官网:https://pypi.org/project/pip/ 2.判断本机是否安装p…