微软揭秘用于侦测Azure云计算平台系统异常的算法

微软在博客介绍了用于自家Azure云计算,大规模侦测异常的算法AiDice,官方表示,由于Azure系统规模太过庞大,即便他们已经做了许多预测和故障缓解措施来确保服务的可靠性,但还是可能遇到意想不到的问题,因此需要借助人工智能的力量来侦测异常。

AiDice是微软研究院和微软Azure联合开发的新型异常侦测算法,专门用来识别大规模、多维时间序资料中的异常,AiDice不仅可以快速捕捉事件,也可以提供重要的脉络,使工程师可以更快速地诊断问题。

微软提到,之所以需要在异常侦测中使用AIOps方法,是因为Azure资料量太庞大,无法在没有运用人工智能的情况下进行分析。大规模的云计算环境中,微软监控为数庞大的云计算组件,每个组件记录大量的资料,而且任何云计算组件的每一列资料都具有数十个字段的资料,像是时间戳、虚拟机硬件类型、操作系统版本、节点所在数据中心和国家等。

官方解释,他们所拥有的数据结构,本质上是多维时间串行资料,因为维度上的各种组合,个别时间串行的资料量便会以指数级增加,这代表他们无法迭代和监控每个时间串行,因此应用AIOps方法成为必要选择。

在AiDice之前,微软在大规模、高维度时间串行资料中侦测异常的方法,便是挑选一组重要的资料维度进行异常侦测,通过关注范围子集,就能够快速侦测组合中的异常,一旦侦测到异常,再由工程师更深入地研究问题,并且运用资料深入研究其他维度,以更全面地诊断问题。

虽然这个方法可行,但是这个方法有两个缺点,第一是需要大量人力发现问题根本,另外,这个方法因为只能侦测有限数量的维度。为了解决这两个问题,微软研究院和微软Azure开始了AiDice算法的研究。

AiDice能够同时查看数十个维度资料,也就能够自动定位时间串行资料枢纽,这让微软可以添加更多属性,诸如硬件微程序、网络代理版本和操作系统版本等,虽然加入这些属性会让搜索空间变大许多,但AiDice能够将问题编码成组合优化的问题,因此比传统方法能够更有效率搜索空间。

AiDice之所以可以同时搜索多维度的秘密,便在于其公式化搜索问题,AiDice算法会先将资料转化成搜索问题,搜索节点是通过特定的枢纽开始,并创建与邻居的关系,像是节点Country=USA, Datacenter=DC1, DiskType=SSD,AiDice会通过交换、添加和删除维度来形成相邻节点。

接下来AiDice算法会通过最大化两个关键组件的目标函数,以智能方式搜索整个搜索空间。第一,当错误突然发生或是变化越大,目标函数得分就会越高,第二,当枢纽发生的错误相对于错误总数的比率高,则AiDice对目标函数的评分也会越高。AiDice会对目标函数得分较高的事件发出警示,而微软借由过滤和自定义来调整警示,减少噪音并且使AiDice更具可操作性。

AiDice能够在系统出现问题时,帮助微软早期掌握问题所在,官方举例,AiDice曾发现某种类型虚拟机内存不足的错误事件,该虚拟机具有数十个维度的属性,AiDice发现特定枢纽中不同节点的低内存事件数量增加,但总体趋势却无法被呈现该问题,通过AiDice微软得以快速侦测问题所在,使工程师快速解决问题根源。