在线教育行业从0到1的 AIOps 之路
今天我会讲三个部分的主题:
一是背景和痛点;
二是架构和规划;
三是台站和机遇。
一、背景和痛点
现在运维的问题不是因为没有很好的监控手段,不是因为我们没有很多的监控数据,而是因为我们的这些数据非常的多。数据本身是有很多的维度,维度非常的复杂,也没有做到很好的关联。那我们在做大的生产环境就会有很多的障碍,你会查很多的系统,最终查到问题出在哪里,这是每个运维都会碰到相似的情况。
这个时候就要引出今天的主题—AIOps,是经历三个阶段。
第一阶段是2013年提出的ITOA,是提供服务和各种技术手段收集存储和展示IT的数据。这个部分主要是以人作为出发点来分析;
第二阶段是2016年的时候,提出来AIOps,这个AI不是现在的AI,是基于大数据结合算法来做的AIOps;
第三阶段是2017年提的AIOps,就是现在的时态,就是智能运维的时代。智能运维也是在2017年真正明确大数据、机器学习两大平台。
这边的图就说明它的成熟,我们可以看到机器学习成熟度比AIOps的成熟度高的,某种角度来说,AIOps现在还不是很成熟,这跟AI技术发展也是很有关系的。昨天我参加了一个学习班,有一个非常资深的北大博士生导师就这么讲了,AI技术现在已经有十多几十年的停滞,现状是这样。
现在还没有突破达到新的AI高度。但为什么又要研究?因为这是我们的方向。它能给我们带来什么呢?AIOps是释放运维人员的人力,把我们从复杂、冗余的告警、监控、日志等各种繁琐当中解放出来。
AIOps的核心两大主题我刚刚讲了:一是大数据;二是机器学习。由这两个核心组建构成了AIOps的平台。AIOps它可以带来什么好处呢?可以提高自动化水平、提高服务管理水平、提高监控水平。
它这么好,它是不是完美的?它在干什么?其实它不能干嘛,也不能替代DIOps,只能作为它的补充。我这里不想讲大数据框架,而是数据处理范畴有实施数据和离线数据及各种数据的聚合,在很多的场景中,数据就是我们的AIOps做的第一步,第一件要做的事情就是数据。
这个数据也做了很多的调研,大家都知道大数据平台,要做离线处理也可以有一些技术。在调研的时候,我们就发现大数据对于AIOps非常重要,你要用这个技术,要搭整套大数据稳定,这是非常痛苦的,还要做其他的插件、中间件,非常的累。有没有办法呢?后面我会讲一些办法。
下面我们讲痛点。
先讲一个指标的痛点,每个运维人员都会碰到,就是突发性系统指标突增。我们晚上都会碰到跑批的任务,研发人员可能认为很正常,同样的报警放在白天肯定是有问题的,现在各种报警,产生的报警噪音是非常大。还有无法预测的业务增量,我原来在小红书体会更深,做电商,每天或者是每周都有自己的波谷,特别是大促的时候,这个量就是百倍的增长。
这种报警怎么报?拍脑袋吗?拍脑袋的时代已经过去了。接下来,我们就真的只有依靠AIOps去找,产生我们的机械系统,可以通过不断的学习,对于学习到正常情况剥离,认为它不是有问题,这样就减少漏报和误报的问题。
运营类,我们是在线教育的公司,核心是音视频。上面这张图是花得不能再看了,上课的时候如果出现这种屏,没有任何一个用户可以忍受。下面这个表达的意思是老师坐在这儿,他如果走开了,或者是学生上了一半,小朋友非常淘气跑开了,你怎么定位这堂课的教学质量是好的?老师的等级定位是正确的,学生学到的教学质量分是多少个?这是定不了的。
目前情况下,很多时候都是拍脑袋、打标签。最简单的是,老师上完课之后,老师给孩子打一个分,家长就会看到,家长也会给老师打。这个是人为参与过程当中不完全能表达教学质量的核心问题,很多时候可能是漏打或者是不想打。
二、架构和规划
我稍微的延伸一下,在这个架构的部分做的出发点是要把数据做一些关联性的分析。怎么做关联性分析?这是我碰到最大的障碍。我们有什么样的数据?监控数据、指标类数据、全链路跟踪数据、事件数据、中间件消费的数据、部分业务数据、日志数据……
我的天啊,这么多数据都是不同维度的。那么,这些数据怎么做关联?这就是AIOps的核心价值,它可以把这些东西通过机器学习的方法来学习模型,再把这些数据关联起来,最终我们会实现什么呢?可以实现:异常检测、异常定位、跟因分析、异常预测,这是它的路径。
AIOps在目前来说涉及到的四个领域,每个领域都有不同的产品和框架、算法。在这里面,我们会通过Agent,在容器和数据机上收集各种数据上来。MessageQ就是做消息缓冲层,我们选择的是卡夫卡,还可以选择MQ,这些都可以。
我想介绍一下,我们选择是实时处理的框架Flink,不知道谁用过这个产品?这个还是相对比较新的实时处理的框架,我比较了一些系统之后,我发现它是非常好用的,速度非常快,不需要很大的生态支撑实时处理框架,所以,我们引用了Flink做一部分的ETR(数据清洗、转换、传输)的工作。
还有告警的平台。之后就是机器学习的部分,机器学习还是探索阶段,切入机器学习的点不是把开元学习的框架拿来用,而是要做四条路径需要有什么算法,需要怎么解决海量KPI的学习。还有数据仓库,我们现在的数据库也是比较新的,为什么选择它?我们对比了一些数据库之后,它是处理速度最快的,20几亿条的数据做全文检索,两个关键指标去查询,都是1秒之内出结果。
也就是一个月的数据,我1秒钟之内,就可以根据需求查出来,这对于数据仓库来说非常有意义,而且压缩比也是不错的,如果放到其他的平台,你的资源开销是非常大的,但是,在这里面是不需要的。
再讲CMDB,它是最基础的工具集,因为这里面有基础数据和标签数据。基础数据收集就是Agent;流式计算处理是Flink;还有基线处理;报警系统的仓库刚刚说过了。
我前面说了AIOps的四条路径:
1)基于无监督的异常检测筛选,筛选了之后会拿到一堆筛选出来的结果,运维人员打标,说这个检测出来的就是有问题,这个波谷是正常的,要先打标。 因为任何机器学习和AIOps,都是要基于这个过程做一些最最初级的教学,告诉它什么是对的,什么是错的。
2)打标完了之后,就是基于有监督的异常检测,然后我们来自动的做算法和参数的调整。
3)把海量KPI做分类。 当然,后面我会讲一些分类算法。 分类之后,再给它特定的检测算法。 这样的话,我就可以从多个层次有落地的心态,否则没有办法落地。
我检测完了,就需要定位,这是非常实际的问题。 如何在AIOps定位? 就是要构建一个非完善的故障数。 当然,后面会有一个算法是“孤立森林”,但是,我今天不会特别深入算法本身,而是告诉大家一个路径或者是该怎么样去解决这些问题。
跟因分析怎么做? 我们要找到原因。 我不希望出了一个问题,所有的报警全都来了,那我就头痛死了,我都不知道问题出在哪,告警聚合是要做的。 还有关联指标波动聚类。 虽然它会把相同指标聚在一起,虽然不是直接强的关系,但是可以聚类。
我们目前还没有做好,因为预测本身来说,它还需要很多的训练模型,包括跟现实状况比较,再让它成熟更成熟。 所以,这里面会分为三个方面: 做故障预测。 我出现问题了,可能是切流量,自动切。
这是讲的 AIOps 四个大路径,可能是比较抽象的。 这是我写的智能基线处理的架构,之前花了很多的分析是在做数据预处理的过程,包括把各种数据清晰转换。 规划是聚类的算法,就是去毛刺,你会看到后面的图,基线系统的时候去掉毛刺,很多地方就是光滑的,否则一直是很毛刺的地方。
三、挑战和机遇
挑战和机遇,跟前面的智能基线系统是差不多的,但是,这里面多了特征工程,可能更多是接近AI的部分,我就不展开多讲了。大概提一下,会加两部分的能力,就是统计特征和个性化配置。
我们从这里看,我们训练原数据存储,原数据我们有各种方法拿到,比如云识别,把语音落成文字; 人脸识别,看看老师是不是坐在摄像头范围之内,没有离开; 说话的时长,学生有没有很正常的问答,这也是一个教学质量的范围。
说明:以上为钱宏伟老师在 GOPS 2019 · 深圳站的分享。
扫描上方二维码,查看完整日程 ▲
点击阅读原文,更多精彩