根据麦肯锡在2017年发布的一份关于未来颠覆性技术的咨询报告中,知识工作自动化领域被排在第二位,仅次于目前红的不能再红的移动互联网。知识工作自动化是应用大数据、人工智能技术,通过对数据建模,建立专家系统,实现工作的自动化。
运维知识自动化是我们团队在知识自动化这个词的基础上自己创造的一个新词汇,受启发于知识工作自动化,将知识工作自动化的理念引入到智能运维领域,从而创造出一个全新的应用模式。2017年9月开始,基石数据启动了以运维知识自动化为核心的智能运维平台,D-SMART大师问诊系统。该系统的目标是采用知识工作自动化的模式创建一个专家系统,帮助我们的运维人员去运维信息系统,让一个水平一般的运维人员能够达到一个中等专家的水平去分析与处理运维工作中遇到的问题。
在运维知识自动化领域,最具有挑战性的是服务路径的自动发现。服务路径的自动发现是区分一个知识自动化系统从专家系统向真正智能系统演进的重要标志,没有服务路径自动发现能力的专家系统严重依赖于专家手工梳理知识,工作量极大,同时这样的系统不具备自学习与自我成长能力,其水平依赖于提供知识的专家,无法突破专家的能力极限。而具有服务路径自动发现能力的专家系统,能够发现专家尚未发现的服务路径,从而超越专家,实现真正的数据智能。
运维知识自动化这个词虽然是老白在2017年自己想出来的,实际上,为了解决运维中的问题所建立的智能系统的基本想法是一直存在的。从二十年前兴起的基于网管思路的欲望自动化平台(比如OPENVIEW,BMC PORTAL等)。我们把运维知识自动化的实现模式分为三种。
第一种是从20多年前网管平台开始就贯彻的一种建设思路,首先建立一个运维自动化平台,然后向这个平台中灌输知识,加入各种监控指标,加入基线进行监控与预警,同时提供大量的工具,用于辅助运维工作。这些工作实际上也是一种专家知识的输入工作。
随着信息系统越来越复杂,这种模式的运维自动化系统对运维的支撑能力越来越不足。于是在近些年出现了大量的将运维知识进行自动化工作的尝试,情景式运维、众包式运维等创新层出不穷。
随着大数据与人工智能技术的发展,知识智能从以前的遥不可及的未来变得越来越清晰可见了。于是大家又开始了一种全新的尝试,首先建立一套知识自动化体系,然后将运维知识构建到知识自动化系统中去,从而让专家的运维知识能够变成一个自动化工具去协助我们工作。
大体来说,运维管理发展经历了四个阶段,从最初的制度化阶段开始,通过运维管理的制度化与运维指标的量化,实现问题发现、运维工作、运维效果评估的闭环管理。实现制度化后的组织一般来说会进入第二个阶段,标准化阶段,实现部署、运行、管理等各个领域生产工艺的标准化。实现标准化是自动化的前提,当标准化工作较好的完成后,已经标准化的工艺就具备了自动化的能力,在自动化阶段,可以完成指标采集的自动化,故障预警的自动化,最终实现全流程的工具化。
目前,大多数承担大型运维任务的组织都基本上实现了各种程度的自动化,因为随着人力成本的提升与信息系统的爆炸式发展,完全靠人工来完成运维任务越来越困难。在运维自动化体系的建设过程中,不少组织都发现运维自动化能够很好的解决一些重复性劳动的问题,将一些繁重的,低水平的重复性工作采用自动化手段来实现是十分容易实现的,但是由于信息系统的复杂性,要想完成一些深入的诊断任务,或者说让运维自动化系统比较肯定的告诉我们系统的状态是好是坏却十分困难。于是,智能化运维成为我们提升运维能力的一个迫切的需求。
相对于智能化运维的需求,我们目前正在使用的一些运维自动化系统存在一些普遍的问题。这些系统都有着完善的运维自动化能力框架,具备做任何工作的能力,但是往往不具备直接为我所用的分析与诊断能力,哪怕是基线与指标数据的采集都与一个专家的水平存在较大的差异。因此此类系统没办法帮助我们去直接处置一个运维工作中的具体问题,当使用这个工具的人是个专家,这个工具就是一个专家系统,而使用这个系统的人是个二把刀,那么这个系统的能力就是二把刀。究其主要原因,就是这些系统里往往只有自动化,而缺少运维中的灵魂“运维知识”。我们的观点是,没有运维知识的运维自动化系统不是一个真正的运维自动化系统。
随着知识体系的越来越复杂,普通的基于类目的管理体系的弊端暴露无遗,有时候想要找一份资料的时候,如果对其分类体系不太清楚,就很难找到这份知识。于是基于全网检索技术的知识管理平台逐渐兴起。在这些知识平台中,度娘是运维人员的良师益友。但是百度这类的搜索平台无法满足精准查找的需求,另外知识是一个网状结构,而百度这样的平台无法帮助我们展示网状的知识结构。
于是乎基于知识图谱的知识管理体系在近年来逐渐兴起。基于知识图谱+全文索引的检索体系也提供了更为精准的知识检索能力。
知识图谱能够很好的展现复杂的知识体系,建立各个知识点之间的网状关系,从而进行知识引导和知识推理,是构建运维知识自动化系统的关键技术。不过如果你看到一个使用知识图谱构建的运维知识自动化系统总是向你炫耀漂亮的图谱,那么这个运维知识自动化系统走偏了路子。真正的知识图谱是隐含于算法之中的,它可能就体现在一个显示了两三行数据的诊断工具中。要想真正的实现利用知识图谱实现智能化运维,那么知识的工具化就是其中的关键。
我们以前的专家系统往往都是固定的,通过专家梳理出来固定的处置方式,对于某些特定场景能够很好的支撑,但是在生产环境中我们遇到的场景错综复杂,预置的固定的工具很难使用实际生产环境的需求。因此对于工具提出了能够动态组合的要求,从而让有限的工具能够完成复杂的诊断任务,适合复杂的实际生产环境。
在经过一段时间的摸索后,我们的团队逐渐发现了一些方法。总结起来通过四个方面来实现我们所需要的运维知识自动化能力。首先是抽取运维知识工具的结构化模型;其次是拆小知识单元,将所有的知识抽象为知识点、诊断、脚本三种基本元素;再其次是制定工具之间的协作标准化协议,建立各个节点之间通讯的基本协议,包括标准化的公共参数区、输入输出协议、上下游协同插座等;最后是引入智能标签机智,实现各种元素之间的动态串联,为最终实现诊断路径的自动化发现提供基础。
比如当系统发现系统的ACTIVE REDO LOG组的数量超过预期的时候自动触发报警,后台智能化分析算法通过系统提供的诊断路径进行路径扫描,并通过异常分析算法对扫描过程中发现的疑似指标进行分析,从而找到存在异常的指标集。当预置的扫描路径未能发现问题的时候,智能化运维系统可以利用扫描过程中发现的标签去扩大扫描范围,并将期间发现的所有疑点都记录下来。最后根据已发现的问题与指标,与案例库中的案例做自动比对分析,进行案例的自动归类,并进行自动化溯源,自动发现根因。
实现这个比较炫酷的能力的关键是智能标签,我们的第一代智能标签都不太好意思叫智能标签,因为标签是完全固定的,是专家预先梳理的。指标、基线、知识点、脚本、诊断路径上的标签都需要人工预置,系统只是根据标签去匹配推荐的诊断路径。这种标签的弊端在具体实践中很快被发现了。于是第二代标签应运而生,这个标签是真正的智能化的。其特点是,第二代标签继承了第一代的专家标签系统,但是第二代标签系统是不需要预置的,有些标签可以根据诊断数据自动生成,同时标签是通过知识图谱方式进行存储管理的,专业技术词典可以让标签实现自动的匹配,完全可以不依赖于人的干预。