日志搜集:大规模系统通常会生成日志来记录系统状态和运行时信息,每个日志都包括时间戳和指示发生了什么的日志消息。

日志解析:日志是非结构化的,包含自由形式的文本。日志解析的目的是提取一组事件模板,从而可以构造原始日志。更具体地说,每个日志消息都可以被解析成带有一些特定参数(可变部分)的事件模板(恒定部分)。

特征提取:将日志解析成单独的事件后,编码成数字特征向量。使用不同的分组技术将原始日志分割成一组日志序列,包括固定窗口、滑动窗口和会话窗口。对每个日志序列,生成一个特征向量(事件计数向量),表示每个事件的发生次数。所有特征向量形成特征矩阵,即事件计数矩阵。

异常检测:将特征矩阵馈送给机器学习模型进行训练,生成异常检测模型。

特征提取

输入是日志解析步骤中生成的日志事件,输出是事件计数矩阵。

固定窗口:基于时间戳,每个窗口固定大小,

滑动窗口:由两个属性组成,窗口大小和步长,如:每小时窗口每五分钟滑动一次。通常步长小于窗口大小,因此会导致不同窗口的重叠。

会话窗口:基于标识符而不是时间戳,标识符用于在一些日志数据中标记不同的执行路径。如:带有block_id的HDFS日志记录了某些数据块的分配、写入、复制和删除。根据标识符对日志进行分组,其中每个会话窗口都有一个唯一的标识符。

在利用窗口技术构建日志序列之后,生成事件计数矩阵X。在每个日志序列中,我们计算每个日志事件的发生次数,以形成事件计数向量。例如,如果事件计数向量是[ 0、0、2、3、0、1、0 ],这意味着在这个日志序列中,事件3发生了两次,事件4发生了三次。最后,大量事件计数向量被构造成事件计数矩阵X,其中条目Xi, j记录了事件j在第i个日志序列中发生了多少次。

不变量挖掘异常检测方法:线性关系,在不同的输入和工作负载下,系统运行始终保持这种关系。相同会话id (如:HDFS中的块id ) 的日志通常表示该会话的程序执行流程。程序执行流程如下图,

在这个执行流程中,系统在从A到G的每个阶段都生成一条日志消息。假设系统中运行着大量的实例,并且它们遵循图4中的程序执行流程,下面的等式将是有效的:

n(A) = n(B)
n(B) = n(C) + n(E) + n(F)
n(C) = n(D)
n(G) = n(D) + n(E) + n(F)

其中n(*)表示属于相应事件类型*的日志数量。不变量挖掘可以揭示代表系统正常执行行为的多个日志事件之间的线性关系(例如,n ( A ) = n ( B ) )。

线性关系在现实世界的系统事件中占主导地位。例如,文件打开后必须关闭。因此,带有短语“打开文件”的日志和带有短语“关闭文件”的日志将成对出现。如果实例中日志事件“打开文件”和“关闭文件”的数量不相等,它将被标记为异常,因为它违反了线性关系。

不变量挖掘旨在寻找不变量(即线性关系),包含三个步骤。不变量挖掘的输入是从日志序列生成的事件计数矩阵,每行都是事件计数向量。

首先,利用奇异值分解估计不变空间,确定下一步需要挖掘的不变量r。其次,该方法通过强力搜索算法找出不变量。最后,通过将其支持度与阈值(例如,98 %的事件计数向量支持)进行比较,验证每个挖掘的不变候选。该步骤将继续,直到获得r个独立不变量。在基于不变量的异常检测中,当新的日志序列到达时,检查它是否遵循不变量。如果至少有一个不变量被破坏,日志序列将被报告为异常。不变量挖掘可以高精度地检测异常,为每个检测到的异常提供有意义和直观的解释,但不变量挖掘过程非常耗时。

有监督的方法:利用机器学习包scikit-learning来实现Logistic回归、决策树和SVM的学习模型。

无监督的方法:

不能直接使用scikit-learn中的聚类API,因为它不是为大规模数据集设计的,数据不适合内存。将聚类算法实现为在线版本,其中每个数据实例被一个接一个地分组为一个聚类。

不变量挖掘方法:为可能的不变量建立了搜索空间,使用多种方法来修正不必要的不变量。

参考:

基于系统日志分析进行异常检测 · Issue #2 · AmateurEvents/article · GitHub

日志异常检测-机器学习相关推荐

  1. 异常检测机器学习_使用机器学习检测异常

    异常检测机器学习 什么是异常检测? (What is Anomaly Detection?) The anomaly detection problem has been a problem that ...

  2. 深度模型的日志异常检测,还有谁不会?

    摘要:日志异常检测的核心是借助AI算法自动分析网络设备日志来发现并定位故障,根据送入检测模型的数据格式,日志异常检测算法模型分为序列模型和频率模型,其中序列模型又可以分为深度模型和聚类模型. AIOp ...

  3. Log BERT 日志异常检测

    摘要 在线检测计算机系统的异常是保护系统不受恶意攻击或故障的关键.系统日志记录了详细信息,广泛用于系统状态分析. 本文提出了一种基于BERT的日志异常检测方法LogBERT,通过两个自监督训练任务学习 ...

  4. Self-Attentive 基于自注意力分类的非结构化日志异常检测

    原文:Self-Attentive Classification-Based Anomaly Detection in Unstructured Logs 理解:使用目标数据集和辅助数据集训练,使目标 ...

  5. 第十五章 异常检测-机器学习老师板书-斯坦福吴恩达教授

    第十五章 异常检测 15.1 问题动机 15.2 高斯分布 15.3 算法 15.4 完善和评估一个异常检测系统 15.5 异常检测 vs 监督学习 15.6 选择使用的特征 15.7 多元高斯分布 ...

  6. 8.7 程序示例--异常检测-机器学习笔记-斯坦福吴恩达教授

    程序示例–异常检测 异常检测模型 提供了一般高斯分布模型和多元高斯分布模型.其中,多元高斯分布模型被限制到了同轴分布: # coding: utf8 # anomaly_detection/anoma ...

  7. 8.4 有监督学习与异常检测-机器学习笔记-斯坦福吴恩达教授

    有监督学习与异常检测 很多人会认为异常检测非常类似于有监督学习,尤其是逻辑回归,但我们用一张表格来描述有监督学习与异常检测的区别: 有监督学习 异常检测 数据分布均匀 数据非常偏斜,异常样本数目远小于 ...

  8. 基于深度模型的日志序列异常检测

    基于深度模型的日志序列异常检测 ​ 日志异常检测的核心是利用人工智能算法自动分析系统日志来发现并定位故障.根据送入检测模型的数据格式,日志异常检测算法模型分为序列模型和频率模型,其中序列模型又可以分为 ...

  9. 技术分享|基于图神经网络的微服务系统调用链和日志融合异常检测方法

    基于图神经网络的微服务系统调用链和日志融合异常检测方法 微服务系统运行时环境具有高度的复杂性和动态性,由此带来的各种问题导致微服务系统常常出现各种故障.为了尽早发现故障,快速准确的异常检测方法成为保证 ...

最新文章

  1. Android实现程序前后台切换效果
  2. Vue 路由 过渡动效 数据获取
  3. JavaScript教程--从入门到精通
  4. 97 岁诺奖得主的励志人生:本科学文学,博士转物理,54 岁才开始锂电池研究...
  5. centos安装vsftp后的虚拟用户设置
  6. 手机app 服务器 网页同步,手机app接入云服务器
  7. 产品经理最重要的3个能力
  8. CMake和Make——简介和对比
  9. 力扣 342.4的幂
  10. python 实例 cadu_【示例详解】AutoCAD处理控件Aspose.CAD 8月新更!支持加载大型DWG文件...
  11. 2.软件架构设计:大型网站技术架构与业务架构融合之道 --- 架构的道与术
  12. 使用Web Deploy进行远程部署
  13. BC26常用术语和缩略词
  14. 《自己动手写网络爬虫》读书笔记
  15. 软件版本GA、RC、beta、Build 等含义
  16. 【STM32】关于Clion+STM32cubeMX环境搭建过程中所遇到的一些问题·其一
  17. 【SQL 解决鸡兔同笼问题】
  18. 位运算 位运算应用
  19. Android iOS APPUI设计规范实例(详细的UI设计方法)
  20. Ansible简介及各模块用法实操

热门文章

  1. Linux操作系统基础之文件传输
  2. 湖北计算机考试条列,湖北省计算机考试大纲及考生须知
  3. 5.Numpy数组中数据的抽取
  4. 常见分布式算法的介绍
  5. 车载以太网协议:SOME/IP (layer5-7)简介
  6. thymeleaf 修改css,用thymeleaf设置CSS样式属性
  7. Unity秒表计时器
  8. 请每一个恋爱中的人耐心地看下去
  9. su和su-以及sudo的理解
  10. dva去掉访问路径中的“#”