使用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实现2014火车票查询代码分享
Jan 10 Python
Python入门篇之正则表达式
Oct 20 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
python自带的http模块详解
Nov 06 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
python用户评论标签匹配的解决方法
May 31 Python
pytorch 自定义数据集加载方法
Aug 18 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
python selenium 弹出框处理的实现
2019/02/26 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
心理健康教育心得体会
2013/12/29 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
英语邀请函范文
2015/02/02 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
Python面试不修改数组找出重复的数字
2022/05/20 Python
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技