写点什么

AI 时代,我们离 AIOps 还有多远?

  • 2017-07-31
  • 本文字数:3312 字

    阅读完需:约 11 分钟

AI 时代,AIOps 热炒,这篇算是蹭个热点:)。回到本行,我们运维应该关心的是什么:

  1. AIOps 到底是什么?
  2. AI 和 Ops 究竟是什么关系?
  3. AIOps 到底会带来哪些改变(颠覆 or 提升)?

按照 Gartner 的定义,AIOps 是 Algorithmic IT Operations,但是在人工智能时代,可能很多的人会把 AI 理解成 Artificial Intelligence,不去纠结定义,我觉得本质上,想要表达的意思是一样的,就是让运维具备机器学习和算法的能力。

如果直观的理解 AI 和 Ops 的关系,类比到人,AI 相当于人的大脑,我们手脚和躯干是执行系统,大脑负责决策判断,手脚躯干负责完成大脑下发的动作指令。我们可以稍微停顿再思考一个场景,无人驾驶是怎么样的?

不难得到答案,AI 更多的是根据路况做决策判断,然后将这些指令下发给汽车自身的驾驶系统(如左转、右转、倒车、油门、刹车等)。在一定条件下(如完善的交通规则、良好的公民素质等),基于海量的数据和优秀的算法,机器学习做出的判断会比人更加高效和准确(至少机器不会因为疲惫而造成反应迟钝等等)。

解释到这里,以此类推,就不难理解 AI 和 Ops 的关系了。

“基于专家经验”到“基于机器学习”的转变前面提到,AI 发挥的作用是,动态变化场景的复杂条件下,能够做出高效准确的决策判断。回到运维上来,我们现在常看到的监控告警、根因分析、日志异常检测、报警聚合、容量预测、故障预测等等,这些都是要基于海量的线上运行时数据,做出分析判断的,所以在这一块,我们会看到大量的跟 AI 结合的 AIOps 的解决方案,特别是智能监控。

而对于一些静态化的配置(CMDB、应用配置管理等),或者按照标准的流程规范,按部就班就可以完成的事情,比如持续集成、发布和部署等等,这些其实就没有必要硬跟 AI 本身扯上什么关系了,但是不是也完全没有任何关系呢?也不一定,后面会看到。

下面以智能监控方面的例子来说明一下,我理解的一整套的 AIOps 应该是什么样子。

参考说明:以下涉及机器学习算法部分和部分截图参考了前 APPDynamics 首席数据科学家、现销售易技术 VP 赵宇辰老师近一年在 QCon 和 AS 上的主题分享内容,也有幸跟宇辰老师做过几次面对面的交流,启发很大。

本文涉及机器学习算法部分只做简单描述,详细内容大家可以参考宇辰老师的演讲内容,再就是需要花时间深入学习和研究了。

http://www.infoq.com/cn/,搜索赵宇辰即可

发现问题—机器学习算法在异常检测中的应用从“基于专家(人)经验”演化成“基于机器学习”的判断和分析模式,举个监控告警规则设定的例子:

通常处理一个问题,抽象出来就是以下三个环节,我们就从这三个环节一步步分析我们要做的具体的事情:

a、传统模式下基于人的经验,是基于固定阈值的设定,比如 CPU 高于 80% 就告警,Load 超过 Core 的 2 倍就告警等等,而这个 80% 和 2 倍,就是基于人的经验设定的,说的高端一些是专家经验。而这种经验的适配性其实是很差的,不同的应用和场景的阈值可能又不一样,大量个性化的配置就出现了,当达到一定规模时,人工基本是不可维护的。

b、发现了这种适配性不好,可以采用动态阈值判断,比如 3-sigma,或者分段 3-sigma,这个时候算法可以根据正态分布的概率,自动的调整告警阈值。但是,这样的算法容易忽略周期性和趋势,比如大促时的各项监控值一定是非常高的,而春节等假期又是非常低的,这时的监控点的分布极有可能是在正态分布之外的,如下图的个别节点就很难识别是否异常。

c、继续改进,到这个阶段,就可以引入一些机器学习算法了,比如基于指数平滑的二次平滑、三次平滑算法,基于分解的傅里叶分解、小波分解算法等,基于深度学习的前馈神经网络、循环神经网络 RNN 算法等,还有其它算法等等,这个时候,算法就需要通过大量的线上历史数据进行训练,以便得出相对准确的告警策略。

d、如此多的算法,到底应该选择那个?这个时候又引入了一类机器学习算法,自动模型选取的分类算法。多个算法同时进行训练,针对不同的场景,每一种算法的效果会不同,这时根据与历史结果的对比,调整每个算法的权重,最终得出一个共同决策结果。如下图所示:

在 c 和 d 阶段,已经可以引入机器学习的算法,并会通过大量历史数据的训练,让算法能够相对准确的进行异常检测,自动生成告警策略。

分析问题—RCA 根因分析第一个阶段是发现问题,这个阶段是针对单个异常信息的,比如单个的 meric 异常、单个应用进程异常、单个应用日志信息的异常等。但是实际情况下,通常一个部件发生异常,有可能会导致周边依赖的部件会同时异常,而且会同时导致 N 个的指标异常和告警。

比如,DB 一条慢 SQL 超时,DB 会告警、依赖 DB 的应用因为连接阻塞也会告警,RT 告警、QPS 异常告警、Load 告警,JVM 告警等等多个指标异常,而且有可能一整个集群都在告警,收告警的人也很多,DBA、PE、开发、SA 等等,再复杂一点,同一时间点,可能还有线上变更操作,如应用在做发布、DB 在执行 DDL、DML 等等。

这个时候,在一个分布式系统里,我们发现了问题,但是问题根因在哪里,就变得十分重要了,这个确认不了,就没法进行止损和故障消除。而且这个定位过程一般是非常非常痛苦的,越漫长越痛苦,但凡处理过故障的同学都会有深刻的切身体会。之前我们通常只是说要做告警收敛,简单和常见场景下靠人的经验是容易判断的,但是复杂情况下,还是得借助机器学习相关的算法,且系统越庞大、越复杂,靠人和专家会越来越无力。

这个时候就需要一套根因分析 RCA 框架来帮我们做这方面的分析工作,宇辰老师给出的建议是 Monitor Everything,然后根据相关性和决策树方面的算法进行根因分析,这块从分享内容看,在业界也是有比较成熟的分析算法。下面给出我的理解,直接看下图:

推荐阅读:Google 搜索,清华大学裴丹老师的《基于机器学习的智能运维》

解决问题—通过运维体系和场景去执行动作上面两个部分,我们更加精准的发现和分析了问题,那接下来,我们就该解决问题了,准确的说是 做解决问题的动作,这个动作谁来做呢,当然是 Ops 运维体系发挥作用了,比如:

a、容量不足,要做扩容动作,或者降级或限流动作

b、发现某台或部分机器 CPU 或内存异常,那做下线动作

c、有慢 SQL,那要尽快执行 Kill 动作

d、代码有 bug?赶紧回滚,或者重新发布修改 bug 的代码

e、。。。。。

如果说前面的两个阶段要看算法的效率和准确度是不是高,到了这个阶段,就看解决问题的动作执行是快是慢了,这个取决于啥呢?当然 取决于我们的整个运维和稳定性体系是否高度自动化,是否高度完善。如果高度完善,在第二步分析问题发现根因后,应该可以跟一个运维的预案场景关联,自动触发预案的执行。做的再好一点,可以做到 AI 的预测,提前识别出可能会发生的问题,提前将预案执行完成。如果能做到这个程度,我想也算是很牛 x 的 AIOps 体系了。

当然,在发现问题和分析问题阶段,也会依赖基础的运维体系,比如日志采集、全链路跟踪、CMDB 和应用配置管理的元数据信息等等。

下面一张图完整说明下我对 AIOps 体系的理解:

个人观点和建议 ****1、AIOps 的发展一定是一个长期演进的过程,AI 是 Ops 的有力补充,进一步降低运维的工作强度和压力,但是 AIOps 一定建设在高度自动化和完善的运维体系之上的,是一个演进的过程,不会是一个跳跃性的过程,产生一个完全颠覆性的 AIOps 模式,将现有的 Ops 体系替代掉。

2、从公司的角度,先集中精力建设好运维自动化体系,效率的问题解决了,再考虑更高层次的建设,就好比先解决温饱问题,再追求小资生活,这一点前两天毕玄大师的文章也表达了这个观点,我是灰常认同的。当然如果人力、精力有富余,做一些前期的预研和投入是没问题的,但不要本末倒置。至于大厂,人家早就投入 N 多年开始研究了,其中百度做的绝对是标杆。

3、从个人角度,机器学习和 AI 的知识和技术还是要花一些个人精力去学习的,凡是会让我们的生活变得更美好的技术必然会有极强的生命力,也必然代表着未来技术发展趋势,AI 就是其中之一。

本文中提到的 AI 和机器学习的部分还是很浅显的,我自己也在学习中,那些复杂的算法和数学公式弄得我始终头晕眼花,目前处于学习,搞不懂,看不去下,放下,然后再拿起,说实话,过程有点痛苦,算法研究类的思维模式跟工程类的思维模式还是有很大不同,继续坚持。

2017-07-31 19:003632

评论 2 条评论

发布
用户头像
引入AI强化运维与强化自动化运维工具的明显区别在哪呢。 我给自动化工具配置丰富的规则约束,覆盖我测试过的,或者遇到过的所有情况,就可以实现引入AI同等效果的功能吧。 训练AI学习和创造规则,也会需要人去参与修正的吧。 楼主是否方便继续分享一下。感谢。
2022-03-18 16:18
回复
用户头像
写的浅显易懂呀
2021-04-21 09:37
回复
没有更多了
发现更多内容

细数应用软件的缺陷分类

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

在软件开发领域寻找更安全的众包平台?YesPMP助您无忧!

知者如C

在 Linux 中使用 cp 命令

树上有只程序猿

Linux copy

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

HarmonyOS开发者

HarmonyOS

对标数据科学家,直面AI浪潮丨和鲸助力中国石油大学(华东)理学院,打造有学科特色的数据科学与大数据专业

ModelWhale

大数据 人才培养 数据科学 高等教育 数据科学家

GaussDB技术解读系列之应用无损透明(ALT)

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

现代技术与语言翻译的未来

汽车之家客户端前端团队

AI 语言翻译 现代技术 AI翻译

亚信科技AntDB &U8 cloud联合产品亮相U8 cloud信创云ERP新品体验会(西安站)

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

数仓中典型的几种不下推语句整改案例

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

Koordinator 异构资源/任务调度实践

阿里巴巴云原生

阿里云 开源 云原生

优测云服务平台|【压力测试功能升级】轻松压测

优测云服务平台

性能测试 压力测试 并发测试 云性能测试

17. 正则表达式

茶桁

Python 正则表达式

企业大数据分析系统可以给企业主带来哪些帮助?

夜雨微澜

天翼云加速落地紫金DPU实践应用,让算力供给更高效!

天翼云开发者社区

云计算

程序员如何利用低代码平台提升软件开发效率?

互联网工科生

程序员 低代码 PaaS 开发工具 开发效率

NFTScan | 08.07~08.13 NFT 市场热点汇总

NFT Research

NFT\

深度学习入门

统信软件

软件测试/测试开发丨Python 模块与包 学习笔记

测试人

Python 程序员 软件测试 测试开发

如何选择最佳的文件传输协议?(FTP、TFTP、Raysync)

镭速

文件传输协议

Nginx 基本原理与最小配置

timerring

nginx

深入思考 Next.js App Directory 架构

汽车之家客户端前端团队

架构 nextjs App Directory

软件测试/测试开发丨Python 多态 学习笔记

测试人

Python 软件测试 测试开发 多态

在Next.js 13中使用React Server组件实现国际化

汽车之家客户端前端团队

React next.js app route RSC

Ethereum第一笔转账

FunTester

OSCS开源安全周报第 55 期:JeecgBoot 远程代码执行漏洞

墨菲安全

网络安全 安全 漏洞

实录分享 | 使用Prometheus和Grafana监控Alluxio运行状况

Alluxio

分布式 Grafana #Prometheus Alluxio 大数据 开源

OpenAtom OpenHarmony携千行百业创新成果亮相HDC.Together 2023

开放原子开源基金会

开源 OpenHarmony

WAVE SUMMIT2023六大分会场同步开启,飞桨+文心大模型加速区域产业智能化!

飞桨PaddlePaddle

人工智能 paddle 百度飞桨

湖仓一体:国产基础软件的创新突破与弯道超车

极客天地

AI时代,我们离AIOps还有多远?_语言 & 开发_赵成_InfoQ精选文章