如何在运维场景中构建一个优秀精准的异常检查系统

在实际的运维场景中,构建一个异常检测系统往往需要两个角色共同参与:领域专家和算法开发人员。领域专家也就是我们的运维人员,他们对KPI曲线的行为很熟悉,可以通过观察KPI曲线并结合自己的领域知识,判断KPI曲线是否出现异常;算法开发人员负责构建异常检测系统,他们熟悉异常检测器(算法),但是实际中有各种不同类型的KPI曲线需要维护,所以需要为不同类型的KPI曲线选择合适的异常检测器以及合适的算法参数。

在实际构建异常检测系统时,首先需要运维人员结合自己的领域知识向算法开发人员描述异常,然后开发人员根据这些描述来为KPI曲线选择合适的检测器和算法参数,接着领域专家根据这些检测器的检测结果向开发人员反馈,来进一步优化检测器。所以实际中经常需要经过多次迭代才能开发出可用的异常检测系统,有时还会出现最终开发失败的例子,这是因为:

1.运维人员难以事先给出准确、量化的异常定义

2.选择和综合不同的检测器需要很多人力

3.检测器算法复杂,参数调节不直观

实际中经常需要经过多次迭代才能开发出可用的异常检测系统,有时还会出现最终开发失败的例子。因此,我们就会问,有没有一个可以自动选择异常检测器和自动调节算法参数的系统呢?答案是有!,我们实验室的研究成果:基于机器学习的KPI自动化异常检测系统(Opprentice)就是针对它设计的,下文将主要介绍Opprentice 的设计思想以及设计框架。

设计思想

Opprentice (Operator's Apprentice)的主要思想就是跟着运维人员从历史数据中学习,运维人员就像是一个“师傅”,将自己的领域知识“教“给Opprentice,然后Opprentice根据“学”到的知识来自动选择合适的异常检测器和算法参数。如下图所示,运维人员首先在历史的KPI曲线上标记出异常,接着Opprentice 使用十几种不同类型的检测器提取出上百个异常特征,此时有了人工标记的数据和异常特征,我们就可以将异常检测问题转化成机器学习中监督式的分类问题,将提取出的特征作为机器学习算法的输入,通过分类算法将KPI曲线上的点分为正常和异常,从而实现了异常检测。

设计框架

Opprentice主要由两部分组成:离线训练分类器和在线检测,在离线训练分类器部分,首先运维人员使用我们开发的异常标注工具,方便快速的标注出KPI曲线上的异常数据,并且设置期望Opprentice达到的准确率(precision)和召回率(recall),然后Opprentice会使用十几种不同类型的检测器提取出KPI曲线的特征,其中每种检测器都有多种不同的参数配置,因此最终会提取出上百个异常特征。因为提取出的上百个异常特征中会存在无关特征和冗余特征,一些机器学习算法使用包含有这些特征的数据训练模型时准确度会降低,为了解决这个问题,我们选择了一种集成学习算法(ensemble learning algorithm)来训练分类器:随机森林,随机森林算法使用了多棵决策树,最终的结果是由每棵决策树的结果投票决定的,并且训练决策树的特征和数据都只是采样了整体特征和数据的一部分,因此使用随机森林训练模型时,无关特征和冗余特征不会影响算法的性能。最后,将提取出的异常特征,运维人员的标注数据和准确性倾向作为输入,训练出异常分类器。

在线检测部分中,首先对于新的数据点进行特征提取,然后用训练出的分类器判断数据点是否异常。在实际中,新的KPI数据中往往会出现一些历史数据中没有出现过的异常类型,为了让分类器可以适应新出现的异常,就需要运维人员定期的对最新的KPI数据进行异常标记,Opprentice会定期训练新的模型来更新分类器。

离线训练分离器

我们使用了来自百度和清华校园网的数个月的真实数据对系统的性能进行了验证,下面四幅图是在四个不同类型的KPI数据上,Opprentice使用的随机森林模型跟其它检测器的性能对比,可以看出Opprentice均取得了优异的结果。

总结

Opprentice将异常检测问题转换成了机器学习中的监督式分类问题,使用运维人员的标注数据,在历史数据中训练出分类模型来自动构建异常检测系统,从而解决了异常检测器的选择和算法参数调整的难题,为复杂检测器的实际应用提供了自动化的框架。来源:传感器

时间: 2024-07-29 09:35:01

如何在运维场景中构建一个优秀精准的异常检查系统的相关文章

优云运维:漫谈redis在运维数据分析中的去重统计方式

今天,我和大家分享下redis在运维数据分析中的去重统计方式.为了避免混淆,本文中对于redis的数据结构做如下约定: SET:saddkey member ZSET:zaddkeyscoremember HYPERLOGLOG:pfaddkeyelement STRING:setbitkeyoffset value 名词约定: 维度:比如版本.操作系统类型.操作系统版本.运营商.设备型号.网络类型等 复合维度:由两个或多个维度交错产生的维度,比如某个版本下的某个设备型号. 去重统计在数据化运维

因果图在运维工作中的应用

因果图在运维工作中的应用 http://netkiller.github.io/journal/fishbone.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地518131+86 13113668890+86 755 29812080<netkiller@msn.com> 版权 2014 http://netkiller.github.io 版权声明 转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明

运维工作中,你都有哪些技巧

很多人都说运维工作是苦逼的,不可否认,有时候我也这样觉的,但回头想想,又有那份工作不辛苦呢,看看那些在叙利亚前线的记者,在马路上的清洁工,在饭店不停颠勺的厨师,在理发店里两只胳膊永远呆在空中的理发师,不停授课讲话的老师们..... 如果你现在做的这份工作是和运维.DBA相关,不管现状如何,是不是应该往好的方向发展呢,在苦逼,乏味,忙碌的工作中寻找乐趣,才能感受到这其中的不一样.有句话说的好,当你做真正自己喜欢的事情时,你才会很少感觉到疲倦. 扯多了.下面是我整理的日常运维工作中常用的技巧,说是技

跟老男孩学Linux运维:Shell编程实战2.3 Shell脚本在Linux运维工作中的地位

2.3 Shell脚本在Linux运维工作中的地位 Shell脚本语言很适合用于处理纯文本类型的数据,而Linux系统中几乎所有的配置文件.日志文件(如NFS.Rsync.Httpd.Nginx.LVS.MySQL等),以及绝大多数的启动文件都是纯文本类型的文件.因此,学好Shell脚本语言,就可以利用它在Linux系统中发挥巨大的作用. 图2-2形象地展示了Shell脚本在运维工作中的地位.   图2-2 Shell脚本在运维工作中的地位形象图

Exchange Server 2010运维过程中的故障诊断小工具的使用简介

Exchange项目经过规划.部署.测试之后进入运维环节,管理员需要掌握日常维护.监视和队列跟踪基本管理工作.简单来说,维护的目的是为了保证邮件系统的正常工作以及数据出现故障时的及时恢复:监视的目的是砍服务和进程的正常运作:跟踪Exchange服务器队列是为了保证邮件处于正常的处理流程中.本文章主要是介绍故障诊断的基本知识. 管理员可以借助Exchange管理控制台工具笨中的邮件流疑难解答程序和性能疑难解答程序来解决邮件的相关故障.邮件流疑难解答程序主要用于诊断邮件流的问题,诸如邮件传递延迟问题

云端运维,回事下一个运维时代吗?

在近期我们发布的"聚能聊"话题中,小伙伴们就云端运维侃侃而谈,表达了大家的看法,不乏点睛妙笔. 以下为较精彩的言论,与大家进行分享,同时也会就运维这一话题继续进行深入讨论. (排名不分先后) szm.:"一件普通的事物,当它有了一个高大上的名字,就会有不同的反响,云,便是这么一个事物,几十年前的分布式,如今的云,都是在将资源最大化利用,原来一台服务器可以开10台虚拟机,分布式就可以2台开21台,当数量足够大,就会发现,原来,这样用利用率更高呢!再说运维,可能很多人都缺乏安全感

企业网站运维过程中电子邮件营销的特点和价值

中介交易 SEO诊断 淘宝客 云主机 技术大厅 众所周知,企业网站目前百度竞价和seo是很多企业运维主管首选的推广方式,其实笔者认为任何一种推广手段只要发挥到极致都会为我们带来很多意想不到的推广效果,百度竞价和seo的优势我们不言而喻,高质量的人群定向是最突出的特点,但是这这两种操作方式我们不可避免的要涉及到我们的推广成本问题,在获得优质客户的同时我们的推广成本也是可见一斑的,下面笔者介绍企业站电子邮件营销的特点和价值分析. 第一,企业用户数据库的整理挖掘和分析.电子邮件营销的一个最大特点就是营

二维条码中只有一个字符

问题描述 使用立象OS-214PLUS条码打印机,下载了官方网站sample,运行正常,但是打印出的条码,只有一个字母.为什么?关键代码如下:intnUSBDataLen;byte[]pbuf;nUSBDataLen=A_GetUSBBufferLen()+1;pbuf=newbyte[nUSBDataLen];A_EnumUSB(pbuf);A_CreateUSBPort(1);A_Clear_Memory();A_Set_Darkness(8);A_Bar2d_PDF417(260,20,0

运维如何为公司节省一个亿?

作者简介: 梁定安,现就职于腾讯社交网络运营部,负责社交平台.增值业务的运维负责人;开放运维联盟委员;腾讯云布道师;腾讯课堂运维讲师. SNG社交网络运营部管理着近10万台的Linux服务器,以此支撑着腾讯社交业务海量业务与用户,如日活2.47亿的QQ.月活5.96亿的QQ空间(数据来源:腾讯2016Q2财报)等众多千万级在线的胖子业务. 面对业务体量的不断增胖的社交类UGC业务,如何能既保证业务的发展,又能有效的控制运营成本的增长?是运维团队迫在眉睫要解决的运营成本难题.经过不断的探索和深挖,