运维;人工智能;大数据;数据管理;自动化;故障监测;根因分析;机器学习;知识图谱
起源
AIOps的概念最早由Gartner在2016年提出,指使用智能算法解决已知的IT问题,并自动化重复的工作。AIOps有两个主要组件:大数据和机器学习,AIOps使用机器学习来分析来自各种IT运维工具和设备的大数据,通过AIOps能够自动发现并实时响应问题。
(Gartner:成立于1979年的独立IT调研与咨询服务公司)
清华大学裴丹教授对AIOps的定义是,AIOps将人工智能应用于运维领域,基于已有的运维数据,通过机器学习的方式来进一步解决自动化运维没办法解决的问题。AIOps不依赖于人为指定规则,主张由机器学习算法自动地从海量运维数据中不断地学习,不断地提炼并总结规则。
运维发展的历程如下图所示,从早期的手工运维,到流程化、标准化运维,再到平台化、自动化运维,最后到近十年的 DevOps(研发运营一体化)和 AIOps(智能运维)。运维发展其实和各种技术更新是密不可分的,也是各种技术重要的实验田。
(DevOps:DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。)
三个基本过程
根据Gartner的说法,AIOps用于增强和部分取代IT运维流程和任务,包括可用性和性能监控,事件关联和分析,IT服务管理和自动化,AIOps平台和解决方案运行的一般过程包括三个基本过程。
数据管理
AIOps平台首先需要观察数据的性质及其行为,AIOps数据发现需要支持海量数据规模,其中分析速度都是关键,必须几乎实时地收集数据并且分析。成功的AIOps平台利用多种机制组合来收集来多环境的数据。环境可能包括一系列容器,虚拟机,网络和存储,公有云以及其他技术和体系结构。
服务管理
AIOps平台提供跨关键IT运维域的编排,如变更管理和事件管理,服务管理传统上是手工的,通常严重依赖于配置管理数据库,对于涉及频繁变更的环境,往往容易出错。AIOps平台提供分析和输入,使IT服务管理任务更加自动化和可靠。
自动化
自动化是AIOps的必杀技,使用机器学习实现关键IT运维的自动化是大多数组织的新挑战。机器学习的自动化技术正在逐渐成熟,组织可以使用它来完成简单或者复杂的工作。
AIOps的层次划分和能力
根据Gartner的定义,AIOps产品或平台应包含下图所示的层级,即:
数据源、大数据、计算、分析、算法、机器学习、可视化
AIOps应具备以下能力:
数据提取
AIOps从各种来源收集各种类型的数据。这可能包括关于错误、日志、性能警报和工单数据。从最不同的数据源摄取数据的能力至关重要。
自动发现
IT环境,尤其是到了云环境,一直是一个动态的过程,企业需要自动发现的能力。AIOps能自动收集标识所有基础设施设备、正在运行的应用程序和的业务数据。
相关性关联
AIOps平台应该将数据以关联起来,确定基础设施、应用程序、业务之间的关系。
可视化展现
AIOps端到端关联过程完成后,需要可视化数据,可视化非常重要,可视化之后IT运维能快速查明问题并采取纠正措施。
自动化
自动化是AIOps的一个关键组成部分,因为它向用户交付了最终的ROI。通过自动化IT运维任务,可以减少运维成本,加速创新,降低MTTR,提高满意度。
(ROI:投资回报率)
(MTTR:平均修复时间)
预测
找到问题的根源是关键,但确定重复出现的事件及预测未来可能发生的事件更为关键。AIOps使用机器学习来确定时间序列中事件的模式,从而预期行为和阈值检测异常,并预测中断和性能问题。
AIOps的关键技术
数据采集与传输
运维数据的产生和采集来自于ITOM监控工具集,通常包括:基础服务可用性和性能监控、网络性能监测与诊断、中间件服务可用性和性能监控、应用性能管理、系统运行日志管理、IT资产管理、IT服务支持管理等。
(ITOM:IT运维管理)
这些基础监控工具采集的运行状态数据和运行性能数据,需要具备足够存量的数据和数据增量;以及足够的数据维度覆盖度(时间维度、空间维度、系统级维度、应用级维度等)才能进行建模利用。与此同时,运维数据的时效性强、多维数据源割裂采集的现状、以及如何在后续建模过程中进行多维数据的高效关联,因此智能运维平台对数据采集层提出以下技术要求:
跨平台、跨语言栈、高兼容性的多模式统一采集质量标准;
兼容多种非容器化与容器化运行环境;
一致的维度关联属性;
在资源占用、数据压缩比、时效性之间可权衡、可调节的传送机制;
可靠的熔断和止损机制;
易于部署和维护、统一的配置和任务管理。
数据汇聚、存储与建模
数据的增量是迅猛的,或将达到网络的上行极限或磁盘的写入极限,因此对汇聚层的服务自身可用性和吞吐性能要求极高。汇聚层更像“数据湖”,提供元数据限制更为宽松的数据写入和获取途径、简易的数据清洗任务创建与管理、灵活的数据访问控制和使用行为审计、具备从原始数据的发掘中更便利的进行价值发掘、具备更敏捷的扩展特性等。
同时,在设计汇聚存储层的建设方案时,需要避免数据泥沼、无法自助建模、无法执行权限管控等困境。在智能运维实践落地时,要由一组大数据业务专家/架构师,明确地为汇聚与存储层设计一系列的能力项,这些能力项不仅要满足“数据湖”的诸多特征,还要具备便捷的开发和实施友好性,降低数据接入与抽取清洗的成本,它应该具备至少以下关键技术能力:
多数据源、海量数据的快速接入能力;
元数据提取和管理能力;
极其简易的、高性能的数据清洗转换能力;
可根据数据字典或特征算法对数据进行关键字识别、模式识别的标记能力;
自动的、自助的,对敏感数据进行脱敏或加密处理能力;
对数据质量检验并对质量标准进行归一化处置的能力;
数据可依据某种维度或特征进行所属和应用权限控制的能力;
自动的、自助的,数据建模探索能力;
对已建立的搜索、过滤、关联、探索模型,友好的进行数据输出能力;
自动的、自助的,分布式集群伸缩能力;
对外提供高效、敏捷数据服务的能力。
算法体系建设
在智能运维(AIOps)落地实践中,算法体系的建设是至关重要的一个环节。算法体系建设方面,应从三个角度来去考虑实现思路:
感知:如异常检测、趋势预测、问题定位、智能告警;
决策:如弹性扩缩容策略、告警策略;
执行:如扩缩容执行、资源调度执行。
智能分析系统将感知、决策、执行三个角度落地到智能运维解决方案中,形成发现问题、产生告警事件、算法模式定位问题、根据分析结果解决问题的闭环功能。
因此,智能分析平台应具备交互式建模功能、算法库、样本库、数据准备、可扩展的底层框架支持、数据分析探索、模型评估、参数及算法搜索、场景模型、实验报告、模型的版本管理、模型部署应用等功能或模块。
算法和数据的工程融合
在智能运维(AIOps)平台落地的实践中,算法和数据的融合,第一步是数据的采集和汇聚,通过以上关键技术,我们已经获得了质量标准归一化的、经过了提取和转换的、时间/空间/业务维度标记清楚的数据,需要补充的是数据预处理相关的核心要点。
数据预处理
在数据挖掘中,海量原始数据中存在大量不完整(有缺失值)、不一致或有异常的数据,严重影响到数据挖掘建模的执行效率,甚至可能导致挖掘结果的偏差。数据预处理的目的是提高数据质量,从而提升数据挖掘的质量。方法包括数据清洗、数据集成和转换,以及数据归约。
通过数据预处理,可以去掉数据中的噪音,纠正不一致;数据集成将数据由多个源合并成一致的数据存储,如数据仓储或数据立方;数据变换(如规范化)也可以使用,例如规范化可以改进涉及距离度量的挖掘算法的精度和有效性;数据规约可以通过合并、删除冗余特征或聚类来压缩数据。这些数据处理技术在数据挖掘之前使用,可以大大提高数据挖掘模式的质量,降低实际挖掘所需要的时间。
需要注意,有些算法对异常值非常敏感。任何依赖均值/方差的算法都对离群值敏感,因为这些统计量受极值的影响极大。另一方面,一些算法对离群点具有更强的鲁棒性。数据分析中的描述性统计分析认为:当我们面对大量信息的时候,经常会出现数据越多,事实越模糊的情况,因此我们需要对数据进行简化,描述统计学就是用几个关键的数字来描述数据集的整体情况。
算法工程集成
在智能运维(AIOps)算法分析系统中,不同算法对应不同的适配场景,需要根据数据特征模式来选择合适的算法应用。如指标异常算法的应用:针对周期稳定性数据,我们采取动态极限的模型;针对周期不稳定的数据,采用频域分析的模型;针对稳定性的数据采用极限阈值判断的模型。通过模型选择的算法,对不同的数据的模型进行适配,达到最优的效果。因此,想要以开箱即用的方式、采用某种标准的机器学习算法直接应用,而不考虑业务特征,通常并不可行。
需要首先考虑业务指标间的关联性,如果有应用或系统间的调用链或调用拓扑供参考,这是最好不过的。如果没有调用链或拓扑,则需要先根据已知可能的业务相关性,进行曲线波动关联、回归分析等算法分析,获得极限阈值尝试得到因果匹配,通过一系列的事件归集得到相关性,再对每一次反馈进行适应,尝试自动匹配更为准确的算法和参数,才可能达到期望的异常检测目标。
智能运维的工程化过程,是一个算法、算力与数据相结合,平台自身与业务系统反馈相结合的复杂过程。在与业务场景结合的前提下,灵活的算力组织、高效的数据同步、可插拔的服务化、模型应用过程中的高精度与高速度,是AI工程化本身的核心诉求。
AIOps的应用案例
美团
2019年6月的全球技术领导力峰会上,美团的资深技术专家宋斌从美团的即时物流业务谈起,介绍了美团面临系统稳定性方面极高的挑战:峰值流量高、瞬间峰值大、业务链路长、线上业务复杂度高、故障敏感,影响履约完成率,造成赔付和客诉。经过一年多的努力,从人工运维状态逐步转化为自动化运维,甚至在尝试使用机器学习的能力,提升运维整理效率。
在此次分享中,我们可以看到美团主要在容量评估、弹性设计、故障诊断、风险防范方面逐步建立了全面可靠的自动化可运维的系统。
百度
目前百度AIOps在监控报警方面已经有两个场景取得突出效果:智能异常检测和智能报警合并。监控报警系统在故障处理流程中主要用于故障发现和故障通告,对此百度主要开展了三个方面的工作:
- 研发了策略运行平台,使AIOps算法快速更新迭代。
- 提出了基于状态机的事件管理引擎,用于快速把握报警事件的状态变化。
- 设计了灵活的报警合并方案,解决报警风暴问题。
微众银行
微众银行在落地 AIOps 过程中,也使用了机器学习算法在多个功能场景中实践,取得了一定的成果。
在异常发现方面,从业务产品可用率出发,定义业务黄金指标(交易量、业务成功率、系统成功率、单位时间交易平均耗时),对黄金指标进行算法结合规则的检测。
在根因定位方面,放弃了传统的组件告警收敛专家经验的定位方法,以消息总线的消息日志为基础,基于算法生成交易链路,异常时绘制故障交易链路图,定位中断子系统,然后以中断子系统为圆心,使用知识图谱算法发散式根因挖掘。另外,历史异常事件的数据也导入知识图谱,修正知识图谱中的专家经验。从运维管理的角度进行异常识别和根因定位标记,不断迭代修订基础模型数据。
AIOps的优势
加速DevOps
DevOps最重要的任务之一是构建发布部署流水线,通过AIOps,可以监视健康指标的部署并快速检测回滚。
减少MTTD和更快的MTTR
通过使用智能算法和提升自动化水平,AIOps可以大幅降低平均检测时间(MTTD),让将平均修复时间(MTTR)更快。
实时分析
AIOps平台通过对数据实时应用各种类型的算法,可以获得问题的实时分析和诊断以及操作建议。
降低报警噪音
报警噪音一直是困难运维的难题,通过一些阀值配置,可以减少一些误报,但是不能从根本上解决问题,AIOps通过大数据分析和机器学习,不断完善算法,可以不断提高过滤警报噪音的水平,从而有效解决这个难题。
故障原因分析及预测
AIOps通过海量的数据分析,可以帮助识别造成问题的根本原因,甚至根据历史数据预测将要发生的故障
运维建议
AIOps基于实时数据和历史数据,可以提供运维建议。
云费用分析及优化
随着云的大量使用,云费用的优化也越来越重要,通过收集相关的数据,使用AIOps数据分析和算法,可以分析云费用,并且更智能的给出优化方法。
智能驱动的网络
思科等网络厂商提出的基于意图的网络(IBN),实际上也可以理解成使用AIOps的方法,基于海量数据和算法,让网络配置更智能。
AIOps的主要挑战
数据量不足
对大型组织数据量可能不是问题,但中小型组织由于数据量不够,使得很难满足AIOps基本的数据样本需求,更别说在数据之上的数据分析和机器学习了。
缺乏数据分析和算法技术和能力
AIOps要求分析并实时处理数据,对数据分析和算法能力要求比较高,本身这方面的技术就在飞速发展,组织要拥有这方面的能力和经验非常困难。
缺乏相关的人才
目前大数据和AI的人才非常紧缺,AIOps要落地,要求相关人才不光要懂大数据和AI技术,还要熟悉运维场景,熟悉业务,这也是制约AIOps落地的一个原因。
漫长的实施周期
在整个企业中采用新的解决方案或工具,可能会花费 很长时间,并且会中断工作流程。大多数(40%)的受访者表示,实施 AIOps 解决方案需要 3-6 个月的时间。25%的人表示需要超过 6 个月的时间。
参考文献
关于“AIOps”智能运维,这篇最透彻!_数据 (sohu.com)
在数字化转型中挖掘 AIOps 的应用潜力 -ZAKER新闻 (myzaker.com)
什么是AIOps智能运维? - 知乎 (zhihu.com)
智能运维AIOps关键技术概览- 智能运维 ——快科技(驱动之家旗下媒体)—科技改变未来 (mydrivers.com)