使用Python机器学习降低静态日志噪声


Posted in Python onSeptember 29, 2018

持续集成(CI)作业可以产生大量的数据。当作业失败时,找出了什么问题可能是一个繁琐的过程,需要对日志进行调查以发现根本原因-这通常是在作业总输出的一小部分中发现的。为了更容易地将最相关的数据从其他数据中分离出来,日志还原机器学习模型使用以前成功的作业运行来训练,以从失败的运行日志中提取异常。
此原则也可应用于其他用例,例如,从期刊或其他系统范围的常规日志文件。

利用机器学习降低噪声

一个典型的日志文件包含许多名义事件(“基线”)以及一些与开发人员相关的异常。基线可能包含难以检测和删除的随机元素,如时间戳或唯一标识符。要删除基线事件,我们可以使用k最近邻模式识别算法 (k-NN)。

使用Python机器学习降低静态日志噪声

的日志事件必须转换为数值。k-NN回归。使用通用特征提取工具HashingVectorizer允许将该进程应用于任何类型的日志。它对每个单词进行散列,并在稀疏矩阵中对每个事件进行编码。为了进一步减少搜索空间,令牌化将删除已知的随机单词,例如日期或IP地址。

使用Python机器学习降低静态日志噪声

一旦模型被训练,k-NN搜索告诉我们每个新事件与基线之间的距离。

使用Python机器学习降低静态日志噪声

Jupyter notebook演示了稀疏矩阵向量的过程,并绘制了稀疏矩阵向量图。

使用Python机器学习降低静态日志噪声

介绍LOGPREIN

LogReallyPython软件透明地实现了这个过程。的最初目标是协助祖尔CI使用构建数据库进行作业失败分析,现在将其集成到软件厂发展锻造的工作日志过程。
最简单的是,LogReduce比较文件或目录,并删除类似的行。Log冷水为每个源文件构建一个模型,并使用以下语法输出距离超过定义阈值的任何目标行:距离文件名:行号:行内容.

$ logreduce varlogauditaudit.log.1 varlogauditaudit.log
INFO logreduce.Classifier - Training took 21.982s at 0.364MBs 1.314kls 8.000 MB - 28.884 kilo-lines
0.244 audit.log:19963:    =USER_AUTH ="root" ="/usr/bin/su" hostname=managesf.sftests.com
INFO logreduce.Classifier - Testing took 18.297s at 0.306MBs 1.094kls 5.607 MB - 20.015 kilo-lines
99.99 reduction from 20015 lines to

更高级的LogReduce使用可以将模型离线训练成可重用的模型。基线的许多变体可以用来适应k-NN搜索树

$ logreduce dir-train audit.clf varlogauditaudit.log.
INFO logreduce.Classifier - Training took 80.883s at 0.396MBs 1.397kls 32.001 MB - 112.977 kilo-lines
DEBUG logreduce.Classifier - audit.clf: written
$ logreduce dir-run audit.clf varlogauditaudit.log

LogReduce还实现了接口,以发现日志时间范围(天/周/月)和Zuul CI作业构建历史记录的基线。它还可以生成HTML报告,在一个简单的接口中发现多个文件中的组异常。

使用Python机器学习降低静态日志噪声

管理基线

使用的关键k-神经网络回归异常检测是有一个已知的良好基线的数据库,该模型用于检测偏离过远的线。该方法依赖于包含所有标称事件的基线,因为基线中没有发现的任何事件都将被报告为异常。

Ci工作是我们的主要目标。k-NN回归,因为作业输出通常是确定性的,以前的运行可以自动用作基线。Log还原功能可以将Zuul作业角色用作失败的作业发布任务的一部分,以便发布简明的报告(而不是完整的作业日志)。这一原则可适用于其他情况,只要可以事先建立基线。例如,一个标称系统的SOS报告可用于查找有缺陷的部署中的问题。

使用Python机器学习降低静态日志噪声

异常分类服务

下一个版本的Logreduce引入了一种服务器模式,用于将日志处理卸载到外部服务,在该服务中可以进一步分析报表。它还支持导入现有的报告和请求来分析Zuul构建。服务运行异步地进行分析,并提供一个Web界面来调整分数和删除假阳性。

使用Python机器学习降低静态日志噪声

评审报告可以作为独立的数据集存档,目标日志文件和记录在平面JSON文件中的异常行的分数。

项目路线图

LogReduce已经被有效地使用了,但是有很多改进工具的机会。今后的计划包括:

  • 管理日志文件中发现的许多带注释的异常,并生成公共域数据集,以便进一步研究。日志文件中的异常检测是一个具有挑战性的主题,拥有一个通用的数据集来测试新的模型将有助于确定新的解决方案。
  • 使用模型重用带注释的异常,以细化所报告的距离。例如,当用户通过将其距离设置为零将行标记为假阳性时,该模型可以减少这些行在未来报告中的得分。
  • 指纹归档异常以检测新的报告何时包含已知的异常。因此,服务可以通知用户作业遇到了已知的问题,而不是报告异常的内容。解决问题后,服务可以自动重新启动作业。
  • 支持更多的目标基线发现接口,如SOS报告、Jenkins构建、Travis CI等。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python转换摩斯密码示例
Feb 16 Python
Python实例一个类背后发生了什么
Feb 09 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
python实现字符串和字典的转换
Sep 29 #Python
python实现字符串中字符分类及个数统计
Sep 28 #Python
python中使用zip函数出现错误的原因
Sep 28 #Python
python中的for循环
Sep 28 #Python
Django migrations 默认目录修改的方法教程
Sep 28 #Python
python数据结构之线性表的顺序存储结构
Sep 28 #Python
python实现顺序表的简单代码
Sep 28 #Python
You might like
php中数据的批量导入(csv文件)
2006/10/09 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP的PSR规范中文版
2013/09/28 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
jquery ui对话框实例代码
2013/05/10 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python如何操作docker redis过程解析
2020/08/10 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
如何手工释放资源
2013/12/15 面试题
高校毕业生登记表自我鉴定
2013/11/03 职场文书
制衣厂各岗位职责
2013/12/02 职场文书
日语求职信范文
2013/12/17 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
单位未婚证明范本
2014/11/25 职场文书