[关闭]
@gaoxiaoyunwei2017 2019-07-23T10:29:53.000000Z 字数 5141 阅读 514

在线教育行业从0到1的AIOps之路

彭小阳


作者:钱宏伟
今天我基于我们公司具体案例来跟大家做一些分享,在提出AIOps概念,到我们做,目前是经历了不到半年的时间,在这个过程当中,我们也做了很多的比较、实践,希望今天的分享可以给各位带来你们更多的参考或者是借鉴的意义。
今天我会讲三个部分的主题:
一是背景和痛点;
二是架构和规划;
三是台站和机遇。

一、背景和痛点

01.png-95kB
现在运维的问题不是因为没有很好的监控手段,不是因为我们没有很多的监控数据,而是因为我们的这些数据非常的多。数据本身是有很多的维度,维度非常的复杂,也没有做到很好的关联。那我们在做大的生产环境就会有很多的障碍,你会查很多的系统,最终查到问题出在哪里,这是每个运维都会碰到相似的情况。
这个时候就要引出今天的主题—AIOps,是经历三个阶段。
第一阶段是2013年提出的ITOA,是提供服务和各种技术手段收集存储和展示IT的数据。这个部分主要是以人作为出发点来分析;
第二阶段是2016年的时候,提出来AIOps,这个AI不是现在的AI,是基于大数据结合算法来做的AIOps;
第三阶段是2017年提的AIOps,就是现在的时态,就是智能运维的时代。智能运维也是在2017年真正明确大数据、机器学习两大平台。
02.png-113.4kB
这边的图就说明它的成熟,我们可以看到机器学习成熟度比AIOps的成熟度高的,某种角度来说,AIOps现在还不是很成熟,这跟AI技术发展也是很有关系的。昨天我参加了一个学习班,有一个非常资深的北大博士生导师就这么讲了,AI技术现在已经有十多几十年的停滞,现状是这样。
现在还没有突破达到新的AI高度。但为什么又要研究?因为这是我们的方向。它能给我们带来什么呢?AIOps是释放运维人员的人力,把我们从复杂、冗余的告警、监控、日志等各种繁琐当中解放出来。
AIOps的核心两大主题我刚刚讲了:一是大数据;二是机器学习。由这两个核心组建构成了AIOps的平台。AIOps它可以带来什么好处呢?可以提高自动化水平、提高服务管理水平、提高监控水平。
它这么好,它是不是完美的?它在干什么?其实它不能干嘛,也不能替代DIOps,只能作为它的补充。我这里不想讲大数据框架,而是数据处理范畴有实施数据和离线数据及各种数据的聚合,在很多的场景中,数据就是我们的AIOps做的第一步,第一件要做的事情就是数据。
这个数据也做了很多的调研,大家都知道大数据平台,要做离线处理也可以有一些技术。在调研的时候,我们就发现大数据对于AIOps非常重要,你要用这个技术,要搭整套大数据稳定,这是非常痛苦的,还要做其他的插件、中间件,非常的累。有没有办法呢?后面我会讲一些办法。
下面我们讲痛点。
先讲一个指标的痛点,每个运维人员都会碰到,就是突发性系统指标突增。我们晚上都会碰到跑批的任务,研发人员可能认为很正常,同样的报警放在白天肯定是有问题的,现在各种报警,产生的报警噪音是非常大。还有无法预测的业务增量,我原来在小红书体会更深,做电商,每天或者是每周都有自己的波谷,特别是大促的时候,这个量就是百倍的增长。
03.png-62.2kB
这种报警怎么报?拍脑袋吗?拍脑袋的时代已经过去了。接下来,我们就真的只有依靠AIOps去找,产生我们的机械系统,可以通过不断的学习,对于学习到正常情况剥离,认为它不是有问题,这样就减少漏报和误报的问题。
04.png-186.7kB
运营类,我们是在线教育的公司,核心是音视频。上面这张图是花得不能再看了,上课的时候如果出现这种屏,没有任何一个用户可以忍受。下面这个表达的意思是老师坐在这儿,他如果走开了,或者是学生上了一半,小朋友非常淘气跑开了,你怎么定位这堂课的教学质量是好的?老师的等级定位是正确的,学生学到的教学质量分是多少个?这是定不了的。
目前情况下,很多时候都是拍脑袋、打标签。最简单的是,老师上完课之后,老师给孩子打一个分,家长就会看到,家长也会给老师打。这个是人为参与过程当中不完全能表达教学质量的核心问题,很多时候可能是漏打或者是不想打。

二、架构和规划

我稍微的延伸一下,在这个架构的部分做的出发点是要把数据做一些关联性的分析。怎么做关联性分析?这是我碰到最大的障碍。我们有什么样的数据?监控数据、指标类数据、全链路跟踪数据、事件数据、中间件消费的数据、部分业务数据、日志数据……
我的天啊,这么多数据都是不同维度的。那么,这些数据怎么做关联?这就是AIOps的核心价值,它可以把这些东西通过机器学习的方法来学习模型,再把这些数据关联起来,最终我们会实现什么呢?可以实现:异常检测、异常定位、跟因分析、异常预测,这是它的路径。
AIOps在目前来说涉及到的四个领域,每个领域都有不同的产品和框架、算法。在这里面,我们会通过Agent,在容器和数据机上收集各种数据上来。MessageQ就是做消息缓冲层,我们选择的是卡夫卡,还可以选择MQ,这些都可以。
我想介绍一下,我们选择是实时处理的框架Flink,不知道谁用过这个产品?这个还是相对比较新的实时处理的框架,我比较了一些系统之后,我发现它是非常好用的,速度非常快,不需要很大的生态支撑实时处理框架,所以,我们引用了Flink做一部分的ETR(数据清洗、转换、传输)的工作。
还有告警的平台。之后就是机器学习的部分,机器学习还是探索阶段,切入机器学习的点不是把开元学习的框架拿来用,而是要做四条路径需要有什么算法,需要怎么解决海量KPI的学习。还有数据仓库,我们现在的数据库也是比较新的,为什么选择它?我们对比了一些数据库之后,它是处理速度最快的,20几亿条的数据做全文检索,两个关键指标去查询,都是1秒之内出结果。
也就是一个月的数据,我1秒钟之内,就可以根据需求查出来,这对于数据仓库来说非常有意义,而且压缩比也是不错的,如果放到其他的平台,你的资源开销是非常大的,但是,在这里面是不需要的。
05.png-54.1kB
再讲CMDB,它是最基础的工具集,因为这里面有基础数据和标签数据。基础数据收集就是Agent;流式计算处理是Flink;还有基线处理;报警系统的仓库刚刚说过了。
我前面说了AIOps的四条路径:
1.异常检测。怎么做异常检测?
1)基于无监督的异常检测筛选,筛选了之后会拿到一堆筛选出来的结果,运维人员打标,说这个检测出来的就是有问题,这个波谷是正常的,要先打标。因为任何机器学习和AIOps,都是要基于这个过程做一些最最初级的教学,告诉它什么是对的,什么是错的。
2)打标完了之后,就是基于有监督的异常检测,然后我们来自动的做算法和参数的调整。
3)把海量KPI做分类。当然,后面我会讲一些分类算法。分类之后,再给它特定的检测算法。这样的话,我就可以从多个层次有落地的心态,否则没有办法落地。
2.异常定位。
我检测完了,就需要定位,这是非常实际的问题。如何在AIOps定位?就是要构建一个非完善的故障数。当然,后面会有一个算法是“孤立森林”,但是,我今天不会特别深入算法本身,而是告诉大家一个路径或者是该怎么样去解决这些问题。
当你构建了非完善的故障数之后,我们就分析它的关联关系,裁减掉“无关联关系”的分支,最终,我们可以出现一些结果集,这个是异常的定位。
3.跟因分析。
跟因分析怎么做?我们要找到原因。我不希望出了一个问题,所有的报警全都来了,那我就头痛死了,我都不知道问题出在哪,告警聚合是要做的。还有关联指标波动聚类。虽然它会把相同指标聚在一起,虽然不是直接强的关系,但是可以聚类。
聚类完了之后,是要粗粒度的定位它的问题,再是粗粒度的界定,到底是服务器的问题,还是用户的问题。定界完了之后,最终找到故障传播关系,也是跟因分析最最重要,也是出结果的东西。
4.故障预测。
我们目前还没有做好,因为预测本身来说,它还需要很多的训练模型,包括跟现实状况比较,再让它成熟更成熟。所以,这里面会分为三个方面:做故障预测。我出现问题了,可能是切流量,自动切。
但是,没有AIOps就是人为了,让它高可用了。但是,碰到混合云怎么办?高可用不可能同时用在线上和线下,当然强用也没有问题。首先是故障切换,再是性能瓶颈的预测,预测到了性能平静之后,就给开发人员说有性能瓶颈改代码,如果改不了就定向的扩容了。
06.png-46.9kB
这是讲的AIOps四个大路径,可能是比较抽象的。这是我写的智能基线处理的架构,之前花了很多的分析是在做数据预处理的过程,包括把各种数据清晰转换。规划是聚类的算法,就是去毛刺,你会看到后面的图,基线系统的时候去掉毛刺,很多地方就是光滑的,否则一直是很毛刺的地方。
异常判定是通过机器学习的部分做切口输出“孤立森林”是基于竖的算法。异常判定,判定出有问题,最终做推荐。我可以预想到的是,这对于我很有用,因为我在各种系统都会碰到这个问题,如果是智能就更好了。现在无法是两种,我拍脑袋定一个百分比,或者是跟前一分钟的正负,这样也可以来处理。
07.png-121.7kB
这是我们异常检测灵敏度自适图,这是两个业务,红色部分是智能基线系统做出的结果,会标注红线是很平缓的,但是,中间会出现毛刺,但是,这个毛刺不太影响业务。碰到这种情况,我们就可以摸平。突发性来一下报警,就不会收到你的报警信息,它的灵敏度就不会那么高,会减少大量无用的报警信息。
我们每年都有做活动,一做活动就产生冲高流量,环比、同比都会报警,百分之百,因为很高,目测就比平常的波动高很多。在下跌过程当中也会报警。这种报警怎么办?如果通过智能基线系统,会学习之前的数据预处理之后,它会把这个部分认为合理正常的。因为它学习了,这个时间段出高峰就是业务高峰来了,是正常的,它就减少误报的干扰。
08.png-157.8kB
这个是抖动。在线教育看到花的图片肯定是忍受不了的,这种花是怎么造成的,就是丢帧。这种情况有的时候要做部分的处理掉单分钟的抖动,出现多少丢帧就能出现抖动的情况,这个还是要机器学习,现在还是拍脑袋的事情。你现在反映给业务,说很正常,抖一下就好了。
所以,智能机器人系统也是基于历史数据学习,自动过滤掉单分钟的抖动。在出现一定持续时间后,它才会触发报警,减少报警之后就不会产生“狼来了效应”,“狼来了效应”很可怕,不是大家监控的数据不够,而是太多了,不想看了。

三、挑战和机遇

挑战和机遇,跟前面的智能基线系统是差不多的,但是,这里面多了特征工程,可能更多是接近AI的部分,我就不展开多讲了。大概提一下,会加两部分的能力,就是统计特征和个性化配置。
09.png-46.5kB
最后想强调一下,我们做AIOps最大的挑战就是做关联分析,这是最大的挑战。这里我特别理出来是应用、业务指标和业务域的关联,怎么做关联,这也是AIOps最核心的事情。我们有一些步骤和阶段,从CMDB做标签、时间序列关联性、从已有的事故报警规则关系的深度学习和挖掘,这就是几个阶段怎么做关联。
这个部分是跟AIOps关系不是十分紧密的部分,我们做在线教育的,可能最直接的考虑到一个问题,就是别人问你“教学质量怎么样、怎么保证教学质量?”这个问题是非常现实的。
10.png-68.9kB
我们从这里看,我们训练原数据存储,原数据我们有各种方法拿到,比如云识别,把语音落成文字;人脸识别,看看老师是不是坐在摄像头范围之内,没有离开;说话的时长,学生有没有很正常的问答,这也是一个教学质量的范围。
包括鼓励词、情绪,现在面部识别也可以抓到情绪,这都是很片面的东西,这些片面的东西就是为在线教育结合AI的部分,保证你的教学质量。通过训练模型、及其学习平台,最终给出一些结果预测,比如说这个老师的教育水平如何、这节课如何,这是有结果说话的。
我不是招一个老师就评多少级,就拿多少工资,这个不一定,你教得好,学生的真正水平达到什么程度,这都是很现实的业务问题,这是展开的部分,跟Ops没有太大的关系,跟AI有关系。
之前跟IBM聊过,大家知道科大讯飞对中国的语音识别做得不错,中文的方言,比如说四川话、上海话、广东话,这些不错。但是,我们在语言的范畴之类,英语也有方言,美语、英语,还有一个搞笑的事情,家长到某平台上学,他不问这个老师是哪里的。
为什么不问呢?因为老师本身是有美语和英语之分,你可能找到的老师是纯正的菲佣英语,也有可能是学到黑人英语,怎么办?那家长吓死了。现在老师要求非常高,要学英式英语,不要美语。现在有英语识别非常好的,这方面也在做。
IBM还做了一件事情,现在做了图像识别是基于时间切片,一帧帧的识别,现在它可以通过事件学习。打个比方,之前腾讯云找IBM,说我想劫某某明星的所有投三分球的视频集锦,之前只能人工做,100小时就100小时剪切出来,但是,现在3秒钟之内就做好了。基于事件,把投篮这一秒的画面作为事件处理,这就是机器学习的美丽,这是展开了,跟AIOps的关系不是特别。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注