清华大学裴丹教授结合过去20年在AIOps领域与几十家企业合作、跨多种技术栈的落地经验积累,以及150篇左右学术论文的算法积累,总结出AIOps落地的15条经验性原则。这些经验分成5个大类原则,分别涉及AIOps落地的大势所趋、价值路线、架构路线、算法路线、生态路线五个方面。
我们继续分享《AIOps落地五大原则(三)》,围绕AIOps“架构路线”介绍3条经验性原则。
原则3(架构路线)
数(据)知(识)驱动、算(法)(代)码联动、人机协同
原则3聚焦AIOps在架构上的路线,总体而言,从架构角度(如下图所示),一个AIOps系统是:以运维监控数据和运维领域知识为输入的、算法和代码联动的、人机协同的分布式系统、其每个组件都有其提供的服务(确定性的或模糊性的),而其整体上模拟运维人员的行为。下面我们分三个方面逐一阐述。
原则3.a 数(据)知(识)驱动
数据和知识双轮驱动的要点在应急排障中的具体体现:一是基于全量数据做异常发现;二是基于知识对一个个零散的异常信号进行关联,从而获得“上帝视角”(如下图)。
具体而言,在运维排障中的“上帝视角”类似下图所示,每个节点是系统运转过程中的一种可能异常(对应的是一个数据源和异常检测算法)。这些异常在系统里的传播关系就是图中的“边”,最终形成这样的一幅运维排障的知识图谱。其核心思路是:① 基于所有可用监控数据的异常检测(寻找所有可能异常);② 基于异常传播的故障定位(将所有相关异常中按照根因可能性排序)。
我们会发现,之前提过的原本并列在一起的各种异常检测算法(如下图),现在通过这张图把它们连在一起,所有的运维排障工作通过这个图实现了。
图的“边”来自于依赖关系知识(逻辑组件之间的调用关系图、逻辑组件在物理组件上部署关系图、物理组件的网络路径关系图)和专家知识(组件内运维故障间的因果关系图, 手工配置或算法挖掘)。
以上“数据知识双轮驱动”的框架,我们在2009年在运营商骨干网运维成功落地之后的十几年间,攻克了领域迁移、算法升级、挖掘替代人工配置等挑战(如下图),目前已经具备了IT运维领域推广的条件。
原则3. b 算(法)(代)码联动
AI应用里不仅包含算法,还可能包含一些(流程、规则)自动化代码。对于一个纷繁复杂的运维场景,我们的任务是通过庖丁解牛的方式,分解成哪些是可以通过算法做的事情,哪些是可以通过自动化脚本做的事情(比如在排障的时候,通过一个SQL获取数据库的一个监控指标)。AIOps系统是一个大型分布式软件,目标是应急排障,不同组件之间相互配合,构成前述原则3那幅图所示的分布式系统。具体的一个组件的实现方法可以是确定性逻辑的硬代码还是模糊性逻辑的基于机器学习方法,就如同一个构成在线软件服务的不同微服务内部用哪种语言实现都可以。
原则3.c 人机协同
前述原则3那幅图所示的分布式系统中包含了一个重要部分,即运维人员的反馈和决策。也就是说,AIOps架构是一个人机协同的架构。这是为什么呢?
我们在实践的过程中发现,AIOps与一些常见的人工智能领域(如计算机视觉)有一个非常显著的不同,即运维数据没法采用众包的方式交给一个普通人来进行标注,必须依赖运维专家,但是运维专家可能没时间或者不愿意标注。
因此,在算法选择时的优先级顺序是:1. 无监督算法;2. 无监督算法 + 主动学习;3. 弱监督算法(如多实例学习,PU学习);4. 有监督算法 + 迁移学习;5.有监督学习。
但是无论采用有监督还是无监督算法,评估的时候都需要标注数据,这个就依赖于日常多积累案例,以及它周边的相关监控数据,从而能够评估无监督的算法。
本人认为,上述“无监督算法+主动学习”是一种有前景的方式,属于“人机协同”(如下图中的例子)。我们在 Infocom 2020有一个安全相关的工作,就是human in the loop--- 无监督异常检测+人工在线反馈,能够检测零日攻击。发生零日攻击时,其攻击指纹尚未发现或部署在防火墙中,因此用传统基于指纹的检测方法通常会漏掉零日攻击。无监督方法能够检测出来零日攻击的反常流量,不过不能保证清晰地区分所有攻击和所有新上线的应用的模式,所以我们用线上人工反馈的方式进行反馈。这里要注意的是,这些反馈是该在线系统运行的有机组成,用户在使用工具时的常规步骤(而不是标注离线数据),其使用过程本身就给系统提供了反馈。我们在若干其它工作中也发现把 “人机协同”作为AIOps架构的一部分是行之有效的。
以上是裴丹教授关于“AIOps落地的架构路线”详细解读。