写点什么

无场景不智能 - 面向场景的智能运维算法体系

发布于: 3 小时前
无场景不智能-面向场景的智能运维算法体系

云智慧智能研究院的算法研究员从场景、算法、实践的角度为智能运维行业挖掘了一条算法体系建设的清晰路径。

章节目录

一、智能运维之问

二、以数据为基础、以场景为导向、以算法为支撑

三、场景与数据

四、算法技术

五、智能运维算法体系

六、不同场景下的智能运维算法

七、智能运维之答


一、智能运维之问


智能运维,又称 AIOps,它能够将大数据、AI 机器学习和其他技术相结合,通过主动、个性化和动态的洞察力支持所有主要 IT 的运营功能。AIOps 平台支持同时使用多个数据源、数据收集方法、分析技术(实时和深度)和表示技术(Gartner 2016)。在搜索引擎中输入“智能运维”四个字,人们能查到无数对于智能运维算法的描述:人工智能、深度学习、时序数据、异常检测、根因定位、智能压缩、拓扑发现、问题自愈、大数据算法等新名词。读者一定会发出这样的疑问:智能运维到底是一项技术?一种应用?还是一次实践?这些名词之间又有哪些关联?

智能运维行业名词云图

站在这样一个信息爆炸、新名词遍地的时代,企业管理者、智能运维建设者、科学研究者该如何去了解智能运维算法的研究、落地和实践的本质?本文试图从场景、算法、实践的角度为智能运维行业挖掘一条算法体系建设的清晰路径。

二、以数据为基础、以场景为导向、以算法为支撑

“人们对新事物的认知过程总是螺旋式迭代演进的,智能运维也是如此。智能运维是运维发展的方向,而且是一个长期的过程——从经验主义到数据驱动,再回归到业务驱动的过程”。行业内达成了高度的、更加面向现实的共识:以数据为基础、以场景为导向、以算法为支撑。笔者认为与人工智能、大数据、区块链等技术体系不同,智能运维并不是一项“全新”的技术,而是一个以智能运维场景为基础的智能技术应用和融合,剥离开场景单谈“智能运维算法”不具有实际意义,智能运维的核心在于探索智能技术如何转化、服务、适配运维行业的发展、如何给运维行业带来解决问题的新思路。

智能运维内涵组成

在智能运维的实践中,越来越多的研究者、实践者、从业者开始认识到,解决运维领域的问题,要依靠算法创新,但又不能仅仅依靠算法创新,“不分析业务、不梳理场景,更新一套算法,效果提升 95%”的故事在行业内的听众越来越少,相反解决问题的算法越来越受到欢迎。

三、场景与数据

在解析智能运维之前,我们不妨先理解运维的本质。运维(这里主要针对 IT 类运维),本质上是对网络、服务器、服务的生命周期各个阶段的运营与维护,在成本、稳定性、效率上达成一致可接受的状态[1]。借助 Peter Bourgon 在 2017 Distributed Tracing Summit[2]对运维所面对的指标、日志、追踪及其关系的定义方法,从而对运维场景与数据进行挖掘和定义:

运维场景、原始数据项及其关系

所谓运维,就是围绕着以下三种场景所进行的知识挖掘、数据统计、事件发现等具体操作。

  • 指标、日志、追踪这三个原始数据项(即图中的三个圆)。


  • 原始数据项的转化(即图中的虚线)如日志可以产生告警、日志可以产生指标。


  • 原始数据项的组合(即图中两圆的交叉部分)如指标和追踪的交集:请求范围内的指标情况等。

基于此,运维场景可以被定义为三种类型:一元场景、转化场景和二元场景。为了不失一般性,本文所说的“场景”指的是“抽象场景”,在不同应用领域可以衍生出不同的“具体场景”。

1.一元场景:

指标、追踪、日志单一数据项下的场景,即上图中的三个圆。

  • 指标:可聚合的逻辑计量单元。指标既可以是基础指标也可以是业务指标,如 CPU 使用率、硬盘容量、APP 新增用户数等。

  • 日志:对离散的不连续事件的一种记录。日志又分为系统日志、应用日志、自由日志等。

  • 追踪:单次请求范围内的所有信息,即调用链信息。调用链可能在系统初始化时被定义,也可能在执行过程中被发掘。

2.转化场景:

一元场景存在着基于信息抽取或信息强化后的转化关系,即上图中的虚线。

  • 日志→指标:通过日志获得指标数据。如:‘2021-01-2215:06:43-algorithm_lab.py[line:38]-INFO:User Cnt 1021’就包含着在 2021-01-22 15:06:43 时间,用户数(User Cnt)为 1021 这个指标数据。

  • 日志→追踪:通过对日志的聚合和转化得到追踪。日志中往往可以挖掘出事件真实的调用链信息,例如银行在完成交易事件时要求每个处理逻辑都打印交易的唯一编号(UUID),因此一个交易事件的完整调用链可以通过日志信息获取。

  • 追踪→指标:通过调用链的分析获得调用范围内的指标。如任务响应时间、任务资源消耗等指标需要通过一个完整调用链周期才能呈现。

  • 指标、日志、追踪→告警: 多个源头产生的告警。这里所说的告警并不是一个运维的基本观测项,准确的说告警是一个派生观测项,指标、日志、追踪所产生的的异常和信息均可以通过告警来呈现。

3.二元场景:

通过两种基本观测项交叉所产生的场景,即上图中任意两圆的交集。

  • 日志+指标:可聚合或分解的事件。在指标发生异常时,运维人员往往希望通过查询此时的日志来分解出指标出现问题的事件原因。

  • 日志+追踪:一个调用周期内的事件。在一个调用周期中发生了哪些事件或有哪些信息,需要在追踪的范围内查找日志。

  • 追踪+指标:一个调用周期内的指标。当调用链发生异常时,往往需要这个调用中的多个指标配合来综合解决运维问题。

四、算法技术

来自 Facebook AI 研究院的团队发起了 Papers with Code[3]项目,其致力于在机器学习领域创建一个自由、开源的社区,提供包括学术论文、代码和评价指标在内的多种资源。他们将智能技术分为计算机视觉、自然语言处理等 16 个大类;1952 个任务。

智能技术及其分类(部分)

本文对其中的四类进行简单介绍:

  1. 计算机视觉类:是一门研究如何使机器“看”的科学,进一步说,是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取“信息”的人工智能系统。其在人工智能领域应用最为广泛,包括人脸识别、目标检测、图像分类等多个细分算法研究领域。

  2. 自然语言处理类:研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融汇语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。其研究范畴包括命名实体识别、问答系统、情感分析、文本生成等。

  3. 时序数据类:时间序列数据是通过统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以是点数。时间序列分析的目的是通过找出样本内时间序列的统计特性和发展规律性,构建时间序列模型,进行样本外预测。其研究范畴包括时序数据的预测、异常检测、数据分类等。

  4. 图算法:指利用特制的线条算图求得答案的一种简便算法。无向图、有向图和网络能运用很多常用的图算法,这些算法包括:各种遍历算法(这些遍历类似于树的遍历)、寻找最短路径的算法、寻找网络中最低代价路径的算法、回答一些简单的相关问题(例如,图是否连通,图中两个顶点间的最短路径是什么等等)的算法。图算法可应用到多种场合,例如:优化管道、路由表、快递服务、通信网站等。为了方便描述,这里把知识图谱相关研究从建模角度分类为图算法。典型的研究场景包括:知识挖掘、知识表示、最短路、最大流等算法。

五、智能运维算法体系

所谓智能运维算法体系,即围绕着运维场景与数据的一次 AI 使能。

智能运维算法体系

1.一元场景下的智能运维算法赋能:

  • 指标+AI:应用时序数据类相关智能算法,赋能于指标计算,可以挖掘指标异常检测、容量预测、健康度检测等场景,实现指标场景智能化。

  • 日志+AI:应用自然语言处理、分类聚类等智能算法于日志场景中,可以挖掘日志解析、日志实体识别、日志分类等场景,实现日志场景智能化。

  • 追踪+AI:应用图算法等智能算法赋能于调用链场景中,可以挖掘路径曝光、调用链优化管理等场景,实现追踪场景智能化。

2.转化场景下的智能运维算法赋能:

  • 日志→指标+AI:应用自然语言处理算法中的命名实体识别技术,赋能于日志模式的识别过程中,可以精准、高效识别日志中的指标信息,实现从日志到指标的转化场景智能化。

  • 日志→追踪+AI:应用知识图谱、概率图模型等智能算法可以在一次调用周期中挖掘指标信息,应用于调用链分析、过程挖掘等场景中,实现从追踪到指标的转化场景智能化。

  • 指标、日志、追踪→告警 +AI:由于指标、日志、追踪均可以产生告警,反之,可以对统一事件下不同观测(指标、日志、追踪)的告警进行告警智能压缩、告警智能抑制并使用实体识别、语义识别等技术,实现从指标、日志、追踪到告警的转化场景智能化。

3.二元场景下的智能运维算法赋能:

  • 指标+追踪+AI:系统故障往往会影响指标数据并沿着调用链进行传播,因此应用图模型(随机游走、概率图模型)等技术可以有效进行基于指标的根因定位,实现指标和追踪场景的智能化。

  • 指标+日志+AI:当指标发生异常时,日志往往能够更清晰地展现异常发生时的系统状态,实现指标异常分析;同时,通过识别日志模式,将模式变化情况使用时间序列异常检测相关算法进行检测,实现指标和日志场景的智能化。

  • 追踪+日志+AI:当系统发生故障时,分析系统调用链上的节点的日志模式、内容变化情况往往能够有效进行基于日志的根因定位,实现追踪和日志场景的智能化。

六、不同场景下的智能算法举例

1.一元场景智能化:容量预测

容量预测是一个典型的针对指标这一一元场景的智能算法应用。

动态扩缩容、资源规划、磁盘容量等是指标预测常见的场景,该类场景通常属于机器学习中的回归问题,其从预测时间长短角度可分为长期预测和短期预测。前者要求预测模型具有较低的偏差,结合现有的时间序列分解、统计、深度学习等不同类型预测算法,可在低频成分中采用集成学习思路进行求解;后者要求预测模型具有较低的方差,常结合短期时间窗进行求解。求解结果结合指标边界及优化条件从而满足场景需求。

指标一元场景(时序数据)下的智能算法分类

在某银行客户跑批时长预测实际场景中,以历史整体业务及子业务跑批时长数据作为训练数据,运用深度学习模型分别对整体及子业务跑批时长进行建模,对当下跑批时间进行预测,为客户估计跑批时间及动态调配资源决策提供有效依据。

在某航空客户的扩缩容场景中,需要通过业务量变化结合历史基础设施资源的使用对未来云端资源需求进行合理估计,运用基于时序分解和深度学习的混合模型进行建模,合理地预测出未来云端的资源需求,为客户做出正确括缩容决策提供重要依据,为客户创造价值。

值得一提的是,在指标一元场景(时序数据)的智能化过程中,应当坚持“以数据为基础、以场景为导向、以算法为支撑”的建设思路,首先要从智能技术中完整梳理针对时序数据的各流派算法(如上图所示,其可以分为基于时序数据分解的算法、基于深度学习的算法、基于回归分析的算法),其次对算法的评价应当以真实的业务数据表现为标准,在长期的算法实践过程中,笔者及团队积累了大量算法适配经验,通过对海量数据的实验和对比分析,不难总结出一些感性的认知,例如:对算法效率和并发数要求高时,不建议优先使用以深度学习为代表的的方法;对于没有明显周期的数据,不建议优先使用基于时间序列分解的方法;对于存在突变等模式变化的数据,往往融合回归分析类方法和实践序列分解的方法会有不错的效果。

2.转化场景智能化:日志异常检测

日志异常检测是一个典型的从日志到指标再到异常检测的转化场景智能算法应用。

日志到指标转化场景下的智能应用

在实际应用中,通过对企业的邮件服务器进行日志采集之后,利用类似自然语言处理中的 NER(命名实体识别)算法,对日志进行实体识别,提取日志中关键实体,如:时间、IP、状态等;例如对于“登录失败”事件,日志中的描述可能是“登录失败”、“登录不成功”等等,算法对其进行智能识别,最终归集为“登录失败”事件的数,将其转化为指标,形成“登录失败”指标数据;随后可以通过指标异常检测算法检测到某时间点为异常点,实现日志到指标转化场景的 AI 使能。

3.二元场景智能化:基于指标的根因定位

指标+调用链二元场景下的智能应用


指标+调用链二元场景下的智能应用

基于指标的根因定位是一个典型的指标加调用链二元场景智能算法应用。

上图所示的是一个简化后的系统调用链拓扑图,包括 5 台物理机、8 台基于物理机的虚拟机、3 个 MySQL 数据服务、3 个 Apache 服务、2 个业务分发节点、2 个具体业务应用的运维场景。当 APP1 发生业务异常告警时,运维人员会沿着分发节点(vm1)、Apache(vm2)、Apache(vm4)查找问题,当发现 vm2 未发生异常指标告警,而 vm4 有类似情况后,会继续沿着 vm4 向下排查,找到其数据库 MySQL(vm5),发现 vm5 也有类似异常,是否就由此推断 vm5 为此次异常的根因呢?有经验的运维人员会继续对 vm5 的依赖节点、关联节点进行排查。事实上,本次故障是由于与 vm5 共享物理主机的 vm8 发生异常而导致的“连锁反应”,真正的异常根因是 vm8。那么如何系统地解决上图所示的问题?这就涉及到“图”相关的算法对二元场景的 AI 使能过程。实践中,通过对系统进行建模(如将上图中服务建模为“点”;资源依赖、调用链依赖建模为“边”;指标的相似度建模为“边权”等)可以将复杂系统与图中的“点”、“边”、“边权”等建立映射关系,故障的传播变成了在“图”的概率转移问题,进而对根因进行辅助定位。

七、智能运维之答

智能运维,是“以数据为基础、以场景为导向、以算法为支撑”的应用科学,笔者认为在具体应用实践中,不存在无场景、无数据而仅靠算法就能够解决的问题。如果有,那么这是一套“魔法”而不是一套“算法”。同时,根据上文所述的系统化算法体系建设方案,我们相信,也一直在见证算法在具体的场景中找到“用武之地”,发挥决定性作用,并最终解决运维领域中的问题。

从“扁平式”算法堆积到“立体化”算法体系

如上图所示,经过本文的阐述,我们对智能运维算法体系的理解不应仅是右下角的“大类”与“子类”算法名词的堆积,而应该是系统化的、层次化的体系结构,并与一元场景、转化场景、二元场景产生对应关联。只有建立这样“立体”的算法体系结构,才能避免盲目追随“热词”,从场景、数据、算法多层次进行智能运维算法体系布局。无场景、不智能,云智慧将沿着这样的算法体系不断耕耘,期待与所有客户、从业者、研究者共享智慧、共享智能技术带来的一次科技盛宴。

参考文献

[1] 百度百科,https://baike.baidu.com/item/%E8%BF%90%E7%BB%B4

[2] Peter Bourgon, https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html

[3] Papers with Code, https://paperswithcode.com/sota



发布于: 3 小时前阅读数: 2
用户头像

全栈智能业务运维服务商 2021.03.10 加入

我们秉承Make Digital Online的使命,致力于通过先进的产品技术,为企业数字化转型和提升IT运营效率持续赋能。 https://www.cloudwise.com/

评论

发布
暂无评论
无场景不智能-面向场景的智能运维算法体系