从 0 搭建AIOps系统

栏目: 服务器 · 发布时间: 5年前

内容简介:1.概述:我们离 AIOps 理想王国还有多远分四个模块,首先我们了解和一起探讨一下,大家都在提 AIOps,我们 AIOps 理想王国到底离咱们现在还有多远,我们一起探讨一下。
编辑推荐:
来自作者彭冬,AIOps,也就是基于算法的IT运维(Algorithmic IT Operations),是由Gartner定义的新类别,源自业界之前所说的ITOA(IT Operations and Analytics)。

从 0 搭建AIOps系统

1.概述:我们离 AIOps 理想王国还有多远

分四个模块,首先我们了解和一起探讨一下,大家都在提 AIOps,我们 AIOps 理想王国到底离咱们现在还有多远,我们一起探讨一下。

从 0 搭建AIOps系统

我们探讨这个问题时候考虑梦想或者理想是什么:

第一个,我们不背锅,我相信在座做运维的同学肯定有背锅的经历,如果我们实施 AIOps 让大家不用再背锅了,这算是第一个理想。

第二个理想,不用再起夜(半夜被叫醒),这个事情经常会发生。我的团队,包括我自己,也会由于线上问题半夜起来操作线上服务,我们希望有了AIOps之后这是要实现的第二个理想;

第三个理想,我们不用去7×24小时值班,尤其618、国庆、双十一、双十二,各种节日非常多,这种情况下要值班,希望有了AIOps这套机制后,不需要再做排班、值班,完全机器自动执行人工要干的事情,这是我们践行AIOps的三大理想。

从 0 搭建AIOps系统

从 0 搭建AIOps系统

刚才知道我们理想,那怎么去实现呢?我们可以通过这样分析方法:5W-1H分析方法,这个理论在公司经营管理方面用得非常多,做任何事情要问5个W,1个H。

第一个W,我们做什么。第二个,在哪个地方做。第三个,什么时候开始做。第四个,谁去做,大家问完这些问题心里已经有答案,谁去做,运维去做AIOps。

我们怎么去做和为什么是我们做,而不是别人去做呢?接下来我们探讨这个问题。

从 0 搭建AIOps系统

这就回到了这个问题,我们理想到底怎么去实现呢?我觉得答案是这样的:coding,之前做运维的同学写脚本或者做机器运维,现在我们做 AIOps 或者 DevOps,我们进入了开发领域,所以我们要不停写代码去实现自己的理想。

有了理想之后,我们又有了方法,到底还要多久才能实现理想呢,这里可以参考借助于康波周期理论。

这是一个俄罗斯非常出名经济学泰斗人物提出的周期概念,是指我们社会的经济发展存在周期性波动的特点。

从 0 搭建AIOps系统

比如说我们的经济通常会经历波谷到波峰过程,每次衰退到兴盛需要科技革命的推动,比如蒸汽机、铁路,还有一些电气工业,到IT,再到我们现在AI,这是推动我们建立这样一个新周期的技术支撑。

这个理论认为,一个周期大概要50年,由此可见,对于AI,我们现在刚开始,所以我们正处于这个时代最开始,大家投身 AIOps 将非常有机会。

从 0 搭建AIOps系统

2. 准备:以终为始,看准目标

刚才提到我们运维从开始不用写代码,到写脚本,到我们可以做SRE工作,再做开发DevOps,再做 AI,我们运维角色发生着变化。从最开始的运维到运维工程师,再到开发工程师,再到大数据工程师,最后都变成算法工程师,所以就是这样一个角色的变化过程,我们处于这个AI时代,我觉得非常好的。

刚才我们谈了理想,有了理想之后,我们设定实施目标,所以现在我们探讨一下怎么去实施目标,要先了解一下我们行业的现状,具体的目标是什么,我们实施 AIOps 三驾马车是什么。

从 0 搭建AIOps系统

我们看一下行业现状,第一梯队,看国内第一梯队,BAT大家都认可的。当然还有BATXJ,还有ATM,还有XXX,还有很多企业,比如Facebook、Google等企业。

我们跟第一梯队比稍微困难一点,他们特点是人多、兵强马壮,钱多、体量大、起步早,别人比我们聪明,起步还比我们早,我们达到他们这样阶段,比如刚才阿里和百度同学分享的技术,我们达到他们境界可能还早着呢。对于第一梯队来讲,我们可能追赶他们稍微困难一点。

从 0 搭建AIOps系统

咱们看第二梯队,第二梯队我们认为市值100亿到500亿之间的企业,比如微博、搜狐、网易,这些企业更注重于业务,工程架构从零开始。

要跟他们同台竞技,咱们有《企业级 AIOps 实施建议》,包括我们出的智能运维这本书,从这些材料里面和高效运维公众号里面学到很多东西,可以从零搭建自己的 AIOps 系统。

从 0 搭建AIOps系统

区别就是这样,对于第一梯队来讲,BAT航空母舰,造各种轮船大炮,所有零部件自己去搞。

对于我们第二梯队来讲,我们做了什么事情呢?我们用了很多开源的东西,对于微博来讲用了非常多开源,比如 Redis 集群我们是国内最大的,我们也用了其他很多的开源软件。

从 0 搭建AIOps系统

我们发现第一梯队和第二梯队区别之后,就可以设定我们自己目标,明确运维目标到底是什么,这个很重要。我们列了几点,一般大家觉得稳定性、可靠性,性能是我们做运维的目标,实际上我们要考虑的是,对于稳定性来讲,有时候运维是不能完全干预的。

从 0 搭建AIOps系统

稳定性一般是指一个系统稳定性或者服务稳定性(出故障的概率),可能跟开发很有关系,他写一个代码有BUG,稳定性就不高。我们运维应该去想办法提高可用性,我们关注的最重要指标应该是系统的可用性。

可用性的定义是这样,有两个因素影响可用性:故障出现的间隔时间,间隔时间如果越长,可用性越高。

第二,故障的修复时间,修复速度越快,可用性越高。

运维要做的工作,一是要去拉长我们故障出现的间隔时间。第二,一旦出故障的时候,我们能够快速去修复,这两点正好可以通过自动化方式和智能化方式能够解决的问题。

从 0 搭建AIOps系统

我们刚才提到运维的核心目标是要提高可用性,下面我们聊一下实现 AIOps 有三驾马车。

第一,感知层,监控平台,我相信所有做运维平台都知道监控平台是什么样子,需要有一个报警平台,需要有一个CI/CD平台,自动化平台。CI/CD平台负责最终执行,有了策略之后,把这个策略实施到线上,需要这三驾马车,只有这三驾马车非常充分情况下,并驾齐驱,三驾马车开足马力情况下才能实施 AIOps 计划。

从 0 搭建AIOps系统

3. 启程:从0开始!构建AIOps大舞台

从 0 搭建AIOps系统

3.1 拥有数据

前面讲了这么多,看一下怎么实施三驾马车,从零到一怎么搭建这个平台。

我们看一下现状,我们所有的企业或者中小企业,我们要对照的看,我们企业到底大数据公司,你的数据量大数据,还是有数据。人工智能,还是智能人工。

前段时间有一个段子说现在很多人工智能客服,后面雇了一帮人做人工客服的,人工智能客服实际上是智能客服,后面有一堆客服人员充当机器,所以我们要看清楚到底是否需要AI,有可能我们只需要一些规则就搞定,报警聚合或者根因分析有规则就搞定,不需要太高深算法,我们要认清自己所面临的具体问题。

从 0 搭建AIOps系统

其次做 AIOps 一定要非常重视数据,我们这本书也非常详细探讨了数据重要性,要以数据为王。如果没有数据,后面所有分析计算、模型、算法,我们无从谈起,数据最开始一定要把关好,从数据采集、存储、计算,再到分析,一定以数据为王。

从 0 搭建AIOps系统

3.2 采集数据

从采集这端,我们可以用开源 工具 非常多。在微博最开始是这个,随着性能增长它有很多问题,我们逐渐迁移,现在用我们自研的一个版本。

从 0 搭建AIOps系统

自研版本支持自动流量控制,我们保证数据不丢失,能够支持各种适配,然后保证我们数据根据自己规则去进行一些简单的清洗。

从 0 搭建AIOps系统

这是我们对采集端的性能测试。

从 0 搭建AIOps系统

刚才提到所有数据采集端,数据采集在实施时候,尤其从零到一需要注意的地方。

第一,采集的同时要做数据预处理,一定做数据处理,否则所有数据放到存储里面去,后面分析计算会带来很大问题,要在最开始时候对数据进行非常严格的处理。同时我们去推动日志的标准化,如果开始架构不合理,最终改造成本非常高。

上次跟滴滴公司的同学交流,他们做的一个trace系统花了两年时间,线上的一个系统,打通所有业务系统之间的桥梁,要建立这个。如果你开始没有考虑到这些,后面你可能需要花相当长时间构建和完善这样的系统。

我们最开始数据源头要注意这点,怎么保留数据能够正确和快速采集到。同时我们要让运维能够影响开发和产品,这点有必要强调一下,非常重要的。

运维隐藏在开发(RD)后面,开发隐藏在产品后面,产品隐藏在业务运营后面,我们运维离业务的链路很长,没有办法直接影响业务,开发或者产品说上线找运维,立马让你上线做线上变更,我们是比较被动的。

我现在所在的团队在尝试改变这样的现状,我们希望运维把我们影响范围前置,把我们数据前置,在产品设计规划阶段,要告诉他们日志应该怎么做,系统应该怎么设计,我们需要建立这样一个机制,让运维工作能够顺利展开。

从 0 搭建AIOps系统

3.3 存储数据

存储,我这块不用太多讲了,如果对大数据比较了解应该非常清楚,比如存储有很多的方法,对于热数据怎么存储,对于时序数据怎么存储。

从 0 搭建AIOps系统

对于数据的计算,我们这里面考虑几个非常关键的问题,刚才说我们数据采集完了之后怎么去做数据的计算,这里面要注意好几个问题,比如我们实时计算系统怎么去支持多种维度的聚合或者关联,这个是相对比较困难的。对于实时系统来讲,我们关注两个点。

第一,时效性,怎么快速去完成。

第二,关注我们数据的准确性,实时流数据很难验证准确性,不像离线数据,按天重跑这个,实时数据很难验证,我们必须通过机制或者架构层面去保证。

我们有一个算子,通过不同算子完成不同维度数据关联和聚合,通过配置方式可以实现线上的灵活变更,比如新增一个数据指标关联,你只需要改下配置搞定,不需要再上线发布。

从 0 搭建AIOps系统

3.4 报警系统

对于第二驾马车,报警系统,我们觉得最关键一点,这里面有开源的这个可以用。我们核心思想把报警集成监控平台里面去,通过监控页面可是化和报警规则,这两个要打通,开发同学配了一个监控图,他希望根据这个趋势设定他自己的报警阈值或者是配置,这两个需要能够做到关联。

从 0 搭建AIOps系统

3.5 CI/CD系统

第三驾马车,CI/CD系统,这个系统很关键一点,它要能去集成我们QA的自动化测试功能,否则我们在所有的线上变更时候都会去做自动化测试,如果你没有自动化的测试环节,你很难保证我们线上的发布质量。

刚才王艺提到我们线上有40%多的问题,因为线上变更导致,现实中可能更当,百分之八九十都是线上变更导致。因此我们必须有一套机制去保证所有的变更是安全,是没有问题的。

从刚才数据的采集到我们数据的存储,再到数据的计算,再到其他报警和监控,整个系统如果合在一起,是这样一个架构,这是我们可以实施架构,不是BAT很难很很高深架构,很多模块可以投入开源框架去完成。

从 0 搭建AIOps系统

3.6 线上系统

最下面是我们线上的系统,线上系统产生很多数据,这个数据通过一些存储介质,我们客户端收集,收集以后进入实时队列,再由实时系统进行消费,期间可能进行数据的关联和聚合,实时数据进入持续数据的存储引擎,比如这里面的这些,很多。再通过查询引擎,可能需要建立一套缓存机制,最终进行可视化,这个监控系统就出来了。

监控系统出来之后,我们去配合我们的报警,我们需要有报警的策略,这个策略直接触发我们线上变更,微博里面有个名人出轨了,我们对系统进行降级或者扩容,这个操作要通过策略直接去影响到线上变更系统,CI/CD变更系统,最终影响我们线上。

同时这里面有一条逻辑,我们还需要一个标注系统,对于实际报警规则有误报情况,对于这些信息进入标注系统,最终去反馈我们线上的特征里面去,这是一个整体的架构情况。

从 0 搭建AIOps系统

4. 爆发:智能决策,决胜千里

从 0 搭建AIOps系统

4.1 模型算法

前面很多老师讲了智能运维根因分析和异常检测,其实简单来讲,你不拿算法来讲,对于异常检测,其实很简单。比如基于统计的模型,基于统计模型一定分析数据统计的规律,或者它的概率分布,这是必须要有,不一定是所有的数据都可以拿这个统计模型来去做。你去分析发现这个数据属于正态分布,就可以用这个方法做检测。

如果没有分布、没有规律,你可能只能按照其他方法,比如基于临近度或者密度的方法。临近度很简单,可以理解异常数据和正常数据,它是一个分类的问题,正常数据在一堆,异常数据在一堆,异常数据距离比较短,这里面可以用分类算法。

基于密度也是一样,物以类聚,聚在一起密度更高一些,它和异常点密度会更小一些,通过这两种方式都可以做。基于临近度和密度方法做,我们选K值可能困难一些,计算复杂非常高。

右边我们通过基于独立森林的算法做检测效果,我们发现这个算法能够带来的效果,我们准确率可以达到90%以上,这里一定要提到一点,我们异常检测不能完全替代,我们希望通过算法提高运维的效率。

从 0 搭建AIOps系统

4.2 报警聚合

对于报警的聚合,这里面报警聚合,我们希望报出来的警,刚才提到有个名人出轨了,可能导致一堆系统都出了问题,这一堆系统可能成千上百台机器发报警信息,不知道该怎么处理了,对于这样的情况,我们需要用报警聚合的方法。

比如我们用的AI方法,基于属性归纳,比如某台机器出了问题,这台机器存储服务,它导致存储服务部可用,存储服务上层业务支撑发博文,会导致发博文会受到影响。

归纳起来,这个机器报警,存储出了问题,发博文受到影响,我们归纳起来只需要发一条报警的短信过来就行了,我们现在发博文是异常的,需要谁去处理,这样就可以极大的降低我们的报警条数。

从 0 搭建AIOps系统

4.3 根因分析

对于根因分析,正好和报警聚合是一个反的方向,刚才是自下而上去做归纳,根因分析自上而下做分析和判断,最常见的方法决策树,也是最简单的办法。

发博文出了问题,它可能是存储服务导致,存储服务运行哪些机器上,哪些机器出了问题,自上而下判断具体的原因。

从 0 搭建AIOps系统

还有一些关联分析,这里面不展开讲了。

从 0 搭建AIOps系统

4.4 预测

我觉得AIOps的未来,应该是预测,很少有人重点讲,我要重点讲一下这一块,我们把祖师也搬出来,诸葛亮他在三国时期很好运用到了预测这种技术,比如赤壁之战、草船借箭和借东风的故事大家耳熟能详,诸葛亮通过预测的方法,预测到11月份冬至时候有大风。根据什么来的?根据历史数据统计情况得来。

时序数据可以运用来运维,我们用时序数据看历史情况来预测未来。我们看时序数据基本特点,它一般会有这样几个特点。

第一个,我们可能有些趋势性,向上或者向下。右边的图周期的变化,它可能还有一些季节性的原因,可能复杂一点随机的看不到规律,它大概有这些特点。

从 0 搭建AIOps系统

对于持续数据的预测,其实我们有很多种方法。第一种方法非常简单,拿历史的N个点来去做平均,比如广告的收入。我们找前七天加起来除以七,就可以得到明天大概收入情况。

考虑距离时间最近的数据可能对预测结果影响更大,我们可以加权,把离最近时间点权重加大,加权平均。

加权平均法选择N个点,N的选择比较困难,所以我们就有指数平滑分法,把历史N个点都选出来,并且也是根据离当前时间越近,设定权重越大,我们第三种方法。

从 0 搭建AIOps系统

还有其他一些方法,比如ARIMA算法,这些算法的一些参数设定都并不完美,比如ARIMA里面需要设定PDQ,这个通常非常困难,也有一些自动化办法,它不一定适合所有场景,这个地方我们用了ARIMA做了对于广告的曝光量做了趋势预测,效果平均误差在4.8左右量。

从 0 搭建AIOps系统

还有一种办法,LSTM,我们请出最高大上的算法出来,我们搞深度学习,刚才提到的那些传统办法,决策树什么的。

我们预测可以用到一些高深的算法,LSTM,它非常适合于做趋势预测,它可以把历史的数据信息,或者一些特征捕获进来,并且通过遗忘门,它有遗忘门机制,可以把历史数据特征有选择性的携带进来。

通过这个,我们也做了效果,我们也是拿了广告每天的请求数据做了分析,发现了我们总的误差率在0.97,平均误差在2.839,比刚才的单纯用那个算法效果好很多。

从 0 搭建AIOps系统

还有很多相关的资源,大家可以关注一下,比如脸书、推特、谷歌有开源算法,大家都可以去了解一下。以上是我分享的全部内容,谢谢大家!

从 0 搭建AIOps系统


以上所述就是小编给大家介绍的《从 0 搭建AIOps系统》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跨越鸿沟

跨越鸿沟

[美] 杰弗里·摩尔(Geoffrey A. Moore) / 赵娅 / 机械工业出版社 / 2009-1 / 36.00元

在真正涉足高科技领域之前,你有必要读一读这本书——在这个节奏飞快、竞争激烈的技术竞技场上,这本书绝对能够帮助你更容易地获得成功。 ——威廉姆·劳森 罗盛软件公司董事会主席兼CEO 最近40年来,本书对高科技营销各个方面所做出的贡献远远超过了其他任何相关书籍。如今已经有无数企业和大学分别在自己的运营和教学过程中引入了鸿沟思想,如果你还不是这些企业或大学中的一员,你可能就要担心自己的未来了......一起来看看 《跨越鸿沟》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具