log-anomaly-detector (LAD)

LAD是Red hat 开发的,一个基于机器学习的Log日志异常检测命令行工具

文章目录

  • log-anomaly-detector (LAD)
    • 1. 安装
    • 2. 示例
      • Command
      • UI Command:
    • 3. 结构
    • 4. Machine Learning Core
      • Language Encoding, Word2Vec
      • SOM
      • 模型结构
    • 5.Metrics
      • Fact Store Metrics
      • Core Metrics
    • 6. Storage
    • 7. demo数据格式
    • 8. 总结

1. 安装

环境要求:python 3.6 或以上
直接安装会出错,为了避免后续的错误,需要预先安装以下几个依赖(后装的话会出错):

pip install git+https://github.com/compmonks/SOMPY.git
pip install ipdb
pip install tornado==5.1
pip install python-dateutil==2.8.0
pip install opentracing-instrumentation==3.2.1

然后安装LAD:
pip install log-anomaly-detector==0.0.2
安装需要几个小时,之前的版本使用UI Command时会有bug,作者在0.0.2版本中修复了

查看是否安装成功:
log-anomaly-detector --help

报错解决

  • 报错1:

    在issue里提了这个错误,作者表示这是因为他们采用了某个git commit当做依赖,这是个bug,需要该项目的作者解决。
    暂时只能采用这个解决办法:
pip install git+https://github.com/compmonks/SOMPY.git
pip install ipdb
  • 报错2:

    解决方法:
pip install tornado==5.1
pip install python-dateutil==2.8.0
pip uninstall opentracing-instrumentation
pip install opentracing-instrumentation==3.2.1

2. 示例

Command

参数及其用法(方括号中为可选参数):
log-anomaly-detector [main-options] <command> <subcommand> [subcommand-options] [parameters]

首先去github上clone整个项目
git clone https://github.com/AICoE/log-anomaly-detector.git
测试用例:

$ cd log-anomaly-detector$ log-anomaly-detector run --config-yaml config_files/.env_cmn_log_fmt_config.yaml --single-run True

这里有个bug,需要修改 config_files/.env_cmn_log_fmt_config.yaml 文件的前两行为1行:

STORAGE_DATASOURCE: "local"

正常运行页面:

UI Command:

参数及其用法(方括号中为可选参数):

export SQL_CONNECT="mysql+pymysql://{USERNAME}:{PASSWORD}@localhost/factstore"
export CUSTOMER_ID="test1"
log-anomaly-detector ui --port 8080 --debug True

实际用例:

export SQL_CONNECT="mysql+pymysql://root:123456@3.3.6.12/factstore"
export CUSTOMER_ID="test1"
log-anomaly-detector --metric-port 8081 ui --port 9999

可以打开fact store(用来反馈false positive):

提交false positive成功:

3. 结构

该框架由三个组件组成。

机器学习Core(LAD Core)
包含自定义代码以训练模型并预测日志行是否异常。目前只有无监督方法,基于W2V(Word2vec)和SOM(自组织图)。我们计划添加更多模型。 监控(指标)

指标 ( Metrics)
为了在生产中监控此系统,利用了grafanaprometheus来可视化此机器学习系统的运行状况。
grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具。
Prometheus 是一套开源的系统监控报警框架。

反馈回路(Fact Store)
有一个元数据注册中心,用于跟踪机器学习系统中来自false_positives的反馈,并提供一种用于ML自我校正错误预测的方法,称为 Fact Store。

4. Machine Learning Core

Language Encoding, Word2Vec

日志消息是可变长度的字符串,需要将它们转换为固定长度的向量表示,机器学习算法可以使用这些向量表示。这里使用了python gensim 包中的 Word2Vec,其具有将单词转换为数值向量的强大能力,可以保留其大部分语义。

SOM

自组织映射 ( self-organizing map, SOM ) 是一种无监督的学习算法,用于帮助我们量化日志的异常性。
SOM的工作原理
SOM是一个单层的神经网络,只有输入层和竞争层两层:

竞争层的神经元采用竞争的方式激活,每个神经元有一个权值向量www ,输入向量 xxx 会激活与之最接近的神经元,这个神经元叫做获胜神经元(winner)。
下图展示了 SOM 的训练过程。紫色区域表示训练数据的分布状况,白色网格表示从该分布中提取的当前训练数据的映射。首先,SOM 节点位于数据空间的任意位置,最接近训练数据的节点(黄色高亮部分)会被选中。它和网格中的邻近节点一样,朝训练数据移动。在多次迭代之后,网格倾向于近似该种数据分布(下图最右)。

最终的效果就是对数据进行了聚类,每个神经元代表一类。这一类所包含的数据,就是能够使它竞争获胜的那些数据。

训练计算过程
Step 1:与其他神经网络相同,需要将WeightsWeightsWeights初始化为很小的随机数
Step 2:随机取一个 输入样本XiX_iXi​
Step 3:遍历竞争层中每一个节点:计算XiX_iXi​与节点之间的相似度(通常使用欧式距离),选取距离最小的节点作为优胜节点(winner node),有的时也叫BMU(best matching unit)
Step 4:根据邻域半径σσσ(sigma)确定优胜邻域将包含的节点;并通过neighborhood function计算它们各自更新的幅度(基本思想是:越靠近优胜节点,更新幅度越大;越远离优胜节点,更新幅度越小)
Step 5:更新优胜邻域内节点的WeightWeightWeight
Step 6:完成一轮迭代(迭代次数+1),返回Step 2,直到满足设定的迭代次数

推理阶段,离最近的神经元结果较远的点是异常点,这里需要设定一个最长距离的阈值参数。

SOM的详细原理可参考:
https://www.zhihu.com/question/28046923
https://zhuanlan.zhihu.com/p/73534694

模型结构

通过W2V将log文本转换为数值向量,生成的向量输入SOM中,进行异常检测模型的训练和推理。

5.Metrics

Fact Store Metrics

用于查看Fact Store部署成功的指标。

Core Metrics

用于可视化正在运行的ML作业和发现false positives。

6. Storage

数据源(Source)和数据接收(Sink)可以有多种存储形式:

7. demo数据格式

项目里给了Local形式数据的例子
输入数据
分为两种:json和txt格式
json格式:

txt格式:常规 log 格式: timestamp severity message

输出数据
json格式:

8. 总结

该工具基于word2vec和SOM算法,可以实现对单条Log日志的异常检测。
总的来说项目较为完整,但其上线不久且用户不多,因此代码中尚存在一些Bug需要修改。

log-anomaly-detector (LAD)相关推荐

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

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

  2. 2021李宏毅机器学习笔记--21 Anomaly Detection

    2021李宏毅机器学习笔记--21 Anomaly Detection(异常侦测) 摘要 一.问题描述 二.Anomaly异常 三.Anomaly Detection(异常侦测)做法 3.1 Bina ...

  3. 2020李宏毅机器学习笔记-Anomaly Detection

    目录 摘要 1. Problem Formulation 2. What is Anomaly? 3. Applications 4. 如何做Anomaly Detection 4.1 Binary ...

  4. 【Paper】Deep Learning for Anomaly Detection:A survey

    论文原文:PDF 论文年份:2019 论文被引:253(2020/10/05) 922(2022/03/26) 文章目录 ABSTRACT 1 Introduction 2 What are anom ...

  5. 【时序异常检测翻译】1.DeepAnT: A Deep Learning Approach for Unsupervised Anomaly Detection in Time Series

    DeepAnT:一种用于时间序列中无监督异常检测的深度学习方法 摘要 传统的基于距离和密度的异常检测技术无法检测流数据中常见的周期性和季节性点异常,在当前物联网时代,时间序列异常检测存在很大差距.为了 ...

  6. Log BERT 日志异常检测

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

  7. (ch9) Deep Learning for Anomaly Detection: A Survey

    Deep Learning for Anomaly Detection: A Survey https://www.researchgate.net/publication/330357393_Dee ...

  8. 【论文合集】Awesome Anomaly Detection

    github:GitHub - bitzhangcy/Deep-Learning-Based-Anomaly-Detection Anomaly Detection: The process of d ...

  9. Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转

    原文地址:https://dzone.com/articles/scalable-distributed-systems-using-akka-spring-boot-ddd-and-java Whe ...

  10. 计算机视觉论文-2021-06-17

    本专栏是计算机视觉方向论文收集积累,时间:2021年6月17日,来源:paper digest 欢迎关注原创公众号 [计算机视觉联盟],回复 [西瓜书手推笔记] 可获取我的机器学习纯手推笔记! 直达笔 ...

最新文章

  1. Python之路【第一篇】:Python简介和入门
  2. 基于ECI+FaaS构建游戏战斗结算服最佳实践
  3. 举例介绍活动目录的优势
  4. Html5开发-使用Canvas绘制图片
  5. word公式插件_再也不用担心我的公式写不出来了:一款公式输入神器实测
  6. 编辑流程图_流程图不会绘制?一分钟手把手教你学会,超简单
  7. java mysql 常见框架_Java岗面试重点:Java+JVM+MySQL+框架+算法,金九银十涨薪全靠它...
  8. linux设备驱动程序注册过程详解
  9. 双指针-维护不变区域
  10. 计算机组成和体系结构电子版,计算机组成及体系结构-安建峰.pdf
  11. 哥德尔 艾舍尔 巴赫--集异璧之大成
  12. OneNote | 插件/使用技巧
  13. codeforces 407C Curious Array
  14. 2021年焊工(初级)新版试题及焊工(初级)复审模拟考试
  15. 技术的鄙视链,其实是职业天花板问题!
  16. 用python读取dat文件,wifi数据采集工具csi tool数据文件(.dat文件)解析
  17. 电子器件系列25:74HC138译码器
  18. Qt编程中的信号和槽机制
  19. 无需任何软件即可永久激活Window
  20. Junit-对涉及数据库操作的服务进行单元测试

热门文章

  1. 单片机生日快乐c语言音乐代码,教你用单片机播放生日快乐歌
  2. UI设计师与服务定律
  3. 《实用VC编程之玩转控件》第15课:Tree树形控件
  4. 如何让 Shell 提示符更酷炫
  5. 台达编码器型号含义_台达光学式旋转编码器
  6. TC3XX 多核ECU的中断向量表解疑
  7. TeraTerm Language 帮助文档1-[如何运行]
  8. pythontrycatch所有异常状态_python 一篇搞定所有的异常处理
  9. sql的简单的增删改查
  10. C语言标准输入输出缓冲区