人工智能在IT运维中的研究和应用

RAD极客会 2019/05/13 23:34

本文首先阐述了人工智能技术为IT运维带来的挑战与转机,接下来对民生银行的智能运维实践进行介绍说明。

金融行业是当今实现电子化发展最靠前的行业之一,商业银行尤其如此。IT建设在此背景下也成为企业重中之重,几乎所有的重要业务都需要信息系统支撑。这对于信息系统的业务连续性要求非常高。一旦信息系统出现异常或者处理不及时,损失将会非常惨重。因此金融行业的IT运维首要任务是确保重要业务在运营中断事件发生后快速恢复,降低或消除因重要业务运营中断造成的影响和损失,保障业务持续运营。

商业银行IT运维的挑战

商业银行的IT运维面临非常多的挑战。

系统多:电子化的高速发展直接反应在商业银行需要管理的信息系统规模越来越庞大。大量的系统占用了大量的硬件设备,产生了大量的数据。尤其是移动互联网等业务的发展,各类分布式技术的使用,大数据的使用等。系统的设备数量在这几年几乎是爆炸式的增长。这么多的系统都需要监控和管理好,对IT运维是非常大的挑战。

环境多:这里的环境多主要是指技术产品比较多。不同业务系统的特点要求差异化的技术产品。数据中心存在着众多不同型号的主机、存储、网络、中间件、数据库、大数据和分布式等产品。新业务的推广和新技术的运用是一个持续的过程。所以技术产品的监控和管理也是很大的挑战。

数据多:这里的数据仅仅是指运维过程中产生的可监控数据,非业务数据。 即便如此,大量的系统、产品,产生了大量的监控数据。这里包含数据指标多和指标数据多两个方面。大量的指标要一一监控并制订规则费时费力。单个指标不停产生的数据量也非常可观,这些大数据也存在挖掘价值。

面对如此大规模的系统和数据需要进行管理,传统的监控和自动化运维存在一些痛点。数据中心现有的性能容量分析手段仅仅做到对性能容量的单项指标监控和进行大致的趋势分析。例如监控CPU、内存、IO、文件系统使用率等信息,然后根据经验人为设定阈值,超过阈值就进行告警。这种自动化运维是“基于人为指定规则”的模式,需要大量人力资源来分析和制订规则。

当告警发生后,还需要人及时登录系统分析是什么原因导致告警的产生。这一点完全依赖处理人的经验和水平。对于性能容量类问题的分析,人力运维是基于专家经验和产品理论的基础,无法快速准确定位到问题根源,在日常处理问题的过程中存在不足。因此当前的运维能力是不能做到对问题根源进行深度和快速分析的。

人工智能为IT运维带来转机

1.人工智能与机器学习。 人工智能(Artificial Intelli-gence)是计算机科学的一个分支,是包含应用计算机科学、生物学、心理学、神经科学、数学、统计学和哲学等学科的科学和技术。人工智能的应用领域非常广泛,尤其在智能机器人、自然语言处理、图像识别、语音识别、专家系统、智能搜索等应用场景表现突出。“机器学习”(Machine Learning)是人工智能的核心研究领域之一,也是实现人工智能的核心方法。机器学习顾名思义,是赋予机器(计算机)学习的能力,通过分析已有的数据,获取数据的内部规律或者价值,并且实现对新数据的处理方法。

机器学习最强大的能力是分类和回归。 众多机器学习模型都是为了实现这两种能力。各种应用场景都是基于这两种能力的应用。分类能力很好理解,例如判断一张图片是猫还是狗。回归则是预测连续的值,例如根据房屋的地理位置、面积等特征预测房价。在IT运维中,我们需要机器学习的分类能力来判断当前指标是正常还是异常,需要回归能力来预测容量等。将人工智能技术运用到IT运维中,将为解决传统IT运维面临的难题带来转机。

2.智能化运维AIOps。 人工智能技术运用在IT运维中,提升运维能力,这就是AIOps(Artificial Intelligence for IT Operations)智能化运维。智能运维是在自动化运维的基础上,利用机器学习的能力,改进和完善现有运维方式。智能运维涉及场景也非常广泛,包含异常检测、异常预测、根因分析、舆情监控、异常自愈、智能变更、问答机器人、容量管理和容量预测等。智能运维的核心是挖掘海量运维数据的价值。因此在智能运维建设中涉及到大数据技术、人工智能技术、自动化技术等很多领域。

民生银行一直在探索智能运维的应用和落地。 民生银行信息科技部在各个运维环节都在尝试结合人工智能技术改进运维方式和运维能力。其中异常检测和根因分析场景是故障运维的事中和事后处理环节,也是IT运维中最核心的部分。这套智能运维系统通过持续接受系统产生的性能数据,采用人工智能技术,从历史数据中获取规则,生成相关分析方法,为实时数据提供运维分析能力(如图1所示)。

新知图谱, 人工智能在IT运维中的研究和应用

图1 系统架构图

机器学习与异常检测

前面提到在IT运维中,性能数据的告警方式是通过人为制订阈值结合自动化运维实现的,这种方式有两个弊端。首先相同指标的阈值的定义是普适性的,所有的系统采用相同的阈值进行告警,不能为单独的系统单独设置,只有极少数系统人为调整过;其次是只有人从经验总结过的指标才会设置阈值告警,不熟悉的指标就忽略了。而机器学习的能力可以弥补上述两种弊端。

该系统异常检测功能将会分析每个系统的每个指标的历史数据,产生机器学习模型,并对实时指标进行预测。因为历史数据没有标签,也没有能力去打标签,所以异常检测场景主要采用机器学习里的无监督学习方法,在一群数据分布中找到可疑的点。例如图2例子中,红色的点就是可疑点,需要标记出来。

新知图谱, 人工智能在IT运维中的研究和应用

图2 日志行为异常检测

为了寻找异常点,该系统异常检测功能将会分析每个系统的每个指标历史数据分布,训练出机器学习模型,然后对实时指标进行预测。

在众多机器学习算法中,民生银行实践比较好的算法有如下几种。

孤立森林:这个算法的核心是找到“容易被孤立的离群点”,也就是分布稀疏且离密度高的群体较远的点。 这是一种基于连续数据的无监督异常检测算法。这个算法稳定有效,并且不需要做数据预处理,例如归一化、标准化等,因此是当前异常检测首选算法。

DBSCAN:DBSCAN其实是一种基于密度的聚类算法,但是同样适合用来检测异常。 DB-SCAN基于一组邻域来描述样本集的密集程度,那么密集程度特别稀疏的点就是需要寻找的异常点。DBSCAN有两个参数ε和MinPts。ε是半径,MinPts是半径内的期望样本个数。从异常检测的思维来说,如果ε半径内样本数小于MinPts,说明密度低、样本稀疏,是可疑点。这个算法要求对原始数据做标准化处理,并且参数ε和MinPts需要交叉验证找到比较通用的合适值。

3σ准则:这种异常检测算法是建立在样本数据满足高斯分布的基础上的。 通过对数据样本求均值μ,标准差σ,距离μ点超过3倍σ的点概率上只有不到0.3%。这个算法最大的问题是样本原始数据不满足高斯分布就不适用了。但原始数据可以通过一些算法转变为符合高斯分布的数据。Sk-learn工具提供了一些转变方法,例如power transform方法和quantile transform方法等。

机器学习算法中还有很多适合做无监督学习的异常检测,这里就不一一列举。在这些方法的基础上,我们还可以更进一步采用集成学习的方式,结合多个异常检测算法的结果做出最后的判断,准确性会更好。

机器学习与根因分析

快速找到异常问题的根源是在异常处理过程中面临的最大挑战。 处理人需要从采集的大量数据分析问题的根本原因,还需要有丰富经验才能做出正确判断。这是比较耗时并且容易出错的环节。如果机器学习模型能够快速分析当前数据并帮助处理人做出正确判断,那么处理人只需要快速采取有效措施,大大减少异常问题处理的时间,减少损失。

问题根因分析其实是一个追本溯源的过程。 因为机器学习的能力是做预测,也就是依据特征数据判断结果。然而现在的需求是从结果找到影响最大的特征数据。所以这里要求机器学习的算法有逆向的解释性。根因分析主要使用机器学习里的有监督学习算法。民生银行实践比较好的算法有如下两种。

多元线性回归:这个算法的核心是每个特征值x对结果值y都有可量化的影响,也就是wx+b=y。 结果y发生的变化原因可以逆向找到影响最大的x是哪个指标,从而找到根因。这种算法简单可理解,然而对特征值x还是有要求,最好是线性无关的特征值集合。这种算法适合回归类型的问题,例如分析CPU的占用率就属于这类问题。

决策树:决策树是一种分类算法,呈树形结构,是基于特征对结果进行分类的过程。 决策树可以看成是一对if-then规则的集合,也可以看作是条件概率分布。这种算法可读性高,也就是可以逆向解读是什么特征的分布影响了最终结果的分类。

其他IT运维场景

智能运维涉及场景广泛,异常检测和根因分析只是其中比较重要的两个场景。机器学习的算法也适用于很多其他运维场景。

异常预测: 异常预测是在异常检测的基础上分析已经获取了有标签的数据,通过机器学习的分类算法,以历史数据作为特征,当前标签作为结果而进行的预测。

日志检测: 日志产生大量的文本数据。自然语言处理是人工智能的强项。通过机器学习,对日志内容提取,分类,可以实现日志的异常检测和问题分析。

系统画像: 机器学习的众多聚类算法适合根据系统特征对系统进行归类,描绘系统画像。例如总结出一个系统是读取繁忙的系统还是IO负载较重的系统等。

问题管理: 问题管理也可以利用人工智能对自然语言处理的能力,例如问题匹配通过机器学习的算法,计算文本之间的相似度来匹配问题。

运维机器人: 运维机器人算是一套交互式系统,连接运维人员与目标系统。运维机器人能利用图像处理能力做登录人员安全验证、通过语音识别获取操作人员意图、通过自然语言处理翻译成执行指令等。

实践结果与总结

民生银行的智能运维实践还属于起步阶段,当前在异常检测和根因分析方面取得一些阶段性成果,将人工智能运用在其他运维场景也在探索和开发中。

民生银行智能运维平台当前已经上线了智能故障发现与分析模块,包含智能异常检测,自动故障定位和调用链路分析等功能。 其中智能异常检测基于无监督学习,无需事先标注。系统全自动训练异常检测模型,定期更新模型参数,算法不断迭代,准确性高,漏报误报少。这里异常检测采用多种模型,包含时序模型、孤立森林、DBSCAN、高斯分布等算法,最后通过集成算法获取最终检测结果,算法容错性高,检测结果更准确。

自动故障定位功能基于多元线性回归,决策树,DB-SCAN聚类算法等,分析不同指标之间的关系。 一方面量化上下级指标间的关联关系,找到异常时刻贡献度最大的根源指标。另一方面基于聚类算法,找到相同行为的其他指标并展示出来。最终异常定位通过关系图示一目了然,加快故障定位和处理。

民生银行的系统是典型的SOA架构,系统之间调用比较多。 因此在故障定位过程中,上下游的关系也变得尤其重要。因此民生银行对系统间访问链路进行监控和分析,展示不同系统的上下游关系。调用链路分析功能支持交易性能分析,差错分析,单笔交易链路分析,下钻分析等分析行为。

机器学习的强大能力和应用前景已经非常清晰。 智能运维就是将机器学习的能力充分利用到当前IT运维工作中,提高运维效率。人工智能将为IT运维带来非常大的好的改变。

声明

来源:机器人网 ,RAD极客会(ID:RAD_Geek_Club)推荐阅读,不代表RAD极客会立场,转载请注明,如涉及作品版权问题,请联系我们删除 或做相关处理!

编辑:Zero

新知图谱, 人工智能在IT运维中的研究和应用

RAD极客会
+ 关注

更多新知