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

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

利用机器学习降低噪声

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

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

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

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

介绍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报告,在一个简单的接口中发现多个文件中的组异常。

管理基线

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

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

异常分类服务

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

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

项目路线图

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

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

总结

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

(0)

相关推荐

  • Python给图像添加噪声具体操作

    在我们进行图像数据实验的时候往往需要给图像添加相应的噪声,那么该怎么添加呢,下面给出具体得操作方法. 1.打开Python的shell界面,界面如图所示: 2.载入skimage工具包和其他的工具包,如图所示,代码如下: from skimage import io,data import numpy as np 3.采用以下指令读取图片: img=data.coffee() 4.采用以下指令填产生噪声: rows,cols,dims=img.shape for i in range(5000)

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

    持续集成(CI)作业可以产生大量的数据.当作业失败时,找出了什么问题可能是一个繁琐的过程,需要对日志进行调查以发现根本原因-这通常是在作业总输出的一小部分中发现的.为了更容易地将最相关的数据从其他数据中分离出来,日志还原机器学习模型使用以前成功的作业运行来训练,以从失败的运行日志中提取异常. 此原则也可应用于其他用例,例如,从期刊或其他系统范围的常规日志文件. 利用机器学习降低噪声 一个典型的日志文件包含许多名义事件("基线")以及一些与开发人员相关的异常.基线可能包含难以检测和删除的

  • Python机器学习之决策树和随机森林

    目录 什么是决策树 决策树组成 节点的确定方法 决策树基本流程 决策树的常用参数 代码实现决策树之分类树 网格搜索在分类树上的应用 分类树在合成数据的表现 什么是随机森林 随机森林的原理 随机森林常用参数 决策树和随机森林效果 实例用随机森林对乳腺癌数据的调参 什么是决策树 决策树属于经典的十大数据挖掘算法之一,是通过类似于流程图的数形结构,其规则就是iIF-THEN-的思想.,可以用于数值型因变量的预测或离散型因变量的分类,该算法简单直观,通俗易懂,不需要研究者掌握任何领域的知识或者复杂的数学

  • python机器学习算法与数据降维分析详解

    目录 一.数据降维 1.特征选择 2.主成分分析(PCA) 3.降维方法使用流程 二.机器学习开发流程 1.机器学习算法分类 2.机器学习开发流程 三.转换器与估计器 1.转换器 2.估计器 一.数据降维 机器学习中的维度就是特征的数量,降维即减少特征数量.降维方式有:特征选择.主成分分析. 1.特征选择 当出现以下情况时,可选择该方式降维: ①冗余:部分特征的相关度高,容易消耗计算性能 ②噪声:部分特征对预测结果有影响 特征选择主要方法:过滤式(VarianceThreshold).嵌入式(正

  • python机器学习之KNN分类算法

    本文为大家分享了python机器学习之KNN分类算法,供大家参考,具体内容如下 1.KNN分类算法 KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算法,是一个概念极其简单,而分类效果又很优秀的分类算法. 他的核心思想就是,要确定测试样本属于哪一类,就寻找所有训练样本中与该测试样本"距离"最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本也属于哪一类.简单的说就是让最相似的K个样本来投票决定. 这里所说的距离,一

  • python 机器学习的标准化、归一化、正则化、离散化和白化

    机器学习的本质是从数据集中发现数据内在的特征,而数据的内在特征往往被样本的规格.分布范围等外在特征所掩盖.数据预处理正是为了最大限度地帮助机器学习模型或算法找到数据内在特征所做的一系列操作,这些操作主要包括标准化.归一化.正则化.离散化和白化等. 1 标准化 假定样本集是二维平面上的若干个点,横坐标 x 分布于区间 [0,100] 内,纵坐标 y 分布于区间 [0,1] 内.显然,样本集的 x 特征列和 y 特征列的动态范围相差巨大,对于机器学习模型(如k-近邻或 k-means 聚类)的影响也

  • python机器学习之线性回归详解

    一.python机器学习–线性回归 线性回归是最简单的机器学习模型,其形式简单,易于实现,同时也是很多机器学习模型的基础. 对于一个给定的训练集数据,线性回归的目的就是找到一个与这些数据最吻合的线性函数. 二.OLS线性回归 2.1 Ordinary Least Squares 最小二乘法 一般情况下,线性回归假设模型为下,其中w为模型参数 线性回归模型通常使用MSE(均方误差)作为损失函数,假设有m个样本,均方损失函数为:(所有实例预测值与实际值误差平方的均值) 由于模型的训练目标为找到使得损

  • Python机器学习之AdaBoost算法

    一.算法概述 AdaBoost 是英文 Adaptive Boosting(自适应增强)的缩写,由 Yoav Freund 和Robert Schapire 在1995年提出. AdaBoost 的自适应在于前一个基本分类器分类错误的样本的权重会得到加强,加强后的全体样本再次被用来训练下一个基本分类器.同时,在每一轮训练中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数时停止训练. AdaBoost 算法是一种集成学习的算法,其核心思想就是对多个机器学习模型进行

  • Python机器学习之PCA降维算法详解

    一.算法概述 主成分分析 (Principal ComponentAnalysis,PCA)是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题. PCA 是最常用的一种降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度. PCA 算法目标是求出样本数据协方差矩阵的特征值和特征向量,而协方差矩阵的特征向量的方向就是PCA需要投影的方向.使样本

  • Python机器学习入门(五)算法审查

    目录 1.审查分类算法 1.1线性算法审查 1.1.1逻辑回归 1.1.2线性判别分析 1.2非线性算法审查 1.2.1K近邻算法 1.2.2贝叶斯分类器 1.2.4支持向量机 2.审查回归算法 2.1线性算法审查 2.1.1线性回归算法 2.1.2岭回归算法 2.1.3套索回归算法 2.1.4弹性网络回归算法 2.2非线性算法审查 2.2.1K近邻算法 2.2.2分类与回归树 2.2.3支持向量机 3.算法比较 总结 程序测试是展现BUG存在的有效方式,但令人绝望的是它不足以展现其缺位. --

  • Python机器学习入门(三)数据准备

    目录 1.数据预处理 1.1调整数据尺度 1.2正态化数据 1.3标准化数据 1.4二值数据 2.数据特征选定 2.1单变量特征选定 2.2递归特征消除 2.3数据降维 2.4特征重要性 总结 特征选择时困难耗时的,也需要对需求的理解和专业知识的掌握.在机器学习的应用开发中,最基础的是特征工程. --吴恩达 1.数据预处理 数据预处理需要根据数据本身的特性进行,有缺失的要填补,有无效的要剔除,有冗余维的要删除,这些步骤都和数据本身的特性紧密相关. 1.1调整数据尺度 如果数据的各个属性按照不同的

随机推荐