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. 《预训练周刊》第14期:World-GAN:Minecraft 世界的生成模型、CMU博士论文探究可控文本生成...
  2. 李开复:AI行业正在回归商业本质,技术公司要有服务心态落地为王 | MEET2020
  3. 成功解决softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be
  4. 自定义圆形控件 RoundImageView
  5. Docker入门-搭建docker私有仓库
  6. Java7 ConcurrentHashMap源码浅析
  7. 在React中处理事件
  8. 用Java解决生产者-消费者问题
  9. matlab调用sh函数,Shell 函数定义与调用
  10. @AspectJ中的切点表达式详解
  11. TCP协议疑难杂症全景解析
  12. python之数字操作
  13. C语言小知识---printf()函数
  14. 设计模式(8)——外观模式
  15. VirtualBox中,Windows虚拟机与主机共享文件夹不能用之一例
  16. 虽然不舍但是事实 —— 纪念下 JavaEye
  17. conficker病毒
  18. Mac 下拷贝文件到移动硬盘
  19. systemd-journald日志进程介绍
  20. XMind思维导图使用详解

热门文章

  1. R3LIVE:A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation 运行记录
  2. 三七总皂苷脂质体纳米粒子修饰负载RNA核糖核酸(实验注意事项)
  3. 2018.6.25课堂笔记
  4. 这就是搜索引擎_这就是搜索引擎如何增强种族主义
  5. 浅谈我的建站经验之导航设置
  6. OSPF的DR和BDR
  7. linux单进程最大内存,限制单个Linux进程的内存使用量
  8. 突破性能瓶颈!ElasticSearch百亿级数据检索优化案例
  9. 关于mindspore.ops.operation.Conv2d算子使用
  10. 【模拟IC】系统频率稳定性分析与极点补偿技术介绍