AIOps指导

   AIOps表明运维操做的人工智能(Artificial Intelligence for IT Operations), 是由Gartner定义的新类别,Gartner的报告宣称,到2020年,将近50%的企业将会在他们的业务和IT运维方面采用AIOps,远远高于2017年的10%。算法

   Gartner在为AIOps做出以下定义:AIOps平台是结合大数据、人工智能(AI)或机器学习功能的软件系统,用以加强和部分取代普遍应用的现有IT运维流程和事务,包括可用性和性能监控、事件关联和分析,IT服务管理以及运维自动化。AIOps 能够被看做是对核心 IT 功能的持续集成和部署 (CI/CD)docker

  •    

  国内对AIOps有深刻研究的清华大学裴丹教授对AIOps的解释:是将人工智能应用于运维领域,基于已有的运维数据(日志、监控信息、应用信息等),经过机器学习的方式来进一步解决自动化运维没办法解决的问题。AIOps 不依赖于人为指定规则。数据库

  AIOps 自从 Gartner 于2016年提出至今已有一段时间,虽然在顶级互联网及电信企业,已有较多落地,但至今仍无基于生产实践的理论体系及实施指南。高效运维社区和云计算开源产业联盟(OSCAR联盟)牵头,和互联网大厂如 BATJ、360、华为、平安科技等的 AIOps 负责人联合编写了国内外首个《企业级 AIOps 实施建议》白皮书,如下为摘抄内容,供我的学习参考。
 
 1、总体介绍

    早期的运维工做大部分是由运维人员手工完成的,这被称为手工运维或人肉运维。这种落后的生产方式,在互联网业务快速扩张、人力成本高企的时代,难以维系。    
    这时,出现了自动化运维,用可被自动触发的、预约义规则的脚本,来执行常见的、重复性的运维工做,从而减小人力成本,提升运维效率。自动化运维能够认为是一种基于行业领域知识和运维场景领域知识的专家系统。可是,随着整个互联网业务急剧膨胀,以及服务类型的复杂多样,“基于人为指定规则”的专家系统逐渐变得力不从心。自动化运维的不足,日益凸显,这也为 AIOps 带来发展机遇。
   AIOps 不依赖于人为指定规则,主张由机器学习算法自动地从海量运维数据(包括事件自己以及运维人员的人工处理日志)中不断地学习,不断地提炼并总结规则
   AIOps 在自动化运维的基础上,增长了一个基于机器学习的大脑,指挥监测系统采集大脑决策所需的数据,作出分析、决策,并指挥自动化脚本去执行大脑的决策,从而达到运维系统的总体目标。
   AIOps 基于自动化运维,将 AI 和运维很好的结合起来,其须要三方面的知识:
  1. 行业领域知识:应用的行业,如互联网、金融、电信、物流、能源电力等,并熟悉生产实践中的难题;
  2. 运维场景领域知识:包括异常检测、故障预测、瓶颈分析、容量预测等;
  3. 机器学习:把实际问题转化为算法问题,经常使用算法包括如聚类、决策树、卷积神经网络等。   
   AIOps 是 企业级 DevOps 在运维(技术运营)侧的高阶实现。
   AIOps 和 DevOps 二者并不冲突,企业级 DevOps 涵括包括运维在内的整个软件生命周期,。此部分可具体参考《研发运营一体化能力成熟度模型》。
   AIOps 是运维的发展必然,是自动化运维的下一个发展阶段。
   Gartner 相关报告预测 AIOps 的全球部署率将从2017年的10%增长到2020年的50%。其应用行业,除了互联网之外,还包括高性能计算、电信、金融、电力网络、物联网、 医疗网络和设备、航空航天、军用设备及网络等领域。

2、AIOps 目标、原则及能力框架编程


   AIOps,通俗的讲,是对规则的AI化,即将人工总结运维规则的过程变为自动学习的过程。浏览器

   具体而言,是对咱们平时运维工做中长时间积累造成的自动化运维和监控等能力,将其规则配置部分,进行自学习的“去规则化”改造,最终达到终极目标:“有AI调度中枢管理的,质量、成本、效率三者兼顾的无人值守运维,力争所运营系统的综合收益最大化”。缓存

 2.一、AIOps 目标性能优化

   利用大数据、机器学习和其余分析技术,经过预防预测、个性化和动态分析,直接和间接加强IT业务的相关技术能力,实现所维护产品或服务的更高质量、合理成本及高效支撑。服务器

 2.二、AIOps 能力分级
   AIOps的建设能够先由无到局部单点探索再到单点能力完善,造成解决某个局部问题的运维AI“学件”,再有多个具备AI能力的单运维能力点或学件组合成一个智能的运维流程,如智能化的监控预测及告警,免干预的自动化扩缩容,免干预的性能调优、免干预的成本组成调优等。  网络

   具体可描述为5级、以下图:
  1. 开始尝试应用AI能力,还无较成熟单点应用
  2. 具有单场景的AI运维能力,能够初步造成供内部使用的学件
  3. 有由多个单场景AI运维模块串联起来的流程化AI运维能力,能够对外提供可靠的运维AI学件
  4. 主要运维场景均已实现流程化免干预AI运维能力,能够对外提供可靠的AIOps服务。
  5. 有核心中枢AI,能够在成本、质量、效率间从容调整,达到业务不一样生命周期对三个方面不一样的指标要求,可实现多目标下的最优或按需最优。
  •     

  2.三、AIOps 能力框架架构

    学件:亦称AI运维组件相似程序中的API或公共库但API及公共库不含具体业务数据只是某种算法,而AI运维组件或称学件则是在相似API的基础上兼具对某个运维场景智能化解决的“记忆”能力,将处理这个场景的智能规则保存在了这个组件中。

    这个智能规则是在必定量的数据下学习而来的,且具备“可重用”“可演进”“可了解”的特性既可共享由专家利用数据训练的算法又可保护数据和隐私。
    注:“学件”(Learnware)一词是南京大学周志华老师的原创,学件(Learnware)= 模型(model)+规约(specification),具备可重用、可演进、可了解的特性。
  • “可重用”的特性使得可以获取大量不一样的样本;
  • “可演进”的特性使得能够适应环境的变化;
  • “可了解”的特性使得能有效地了解模型的能力。
    不少人可能在本身的应用中已经创建了这样的模型,他们也很愿意找到一个地方把这些模型分享出去。那之后一个新用户想要应用,也许不用本身去创建一个,而是先到“学件”市场上找一找有没有合适的,能够拿来使用修改。
    由于学件是在专家基础上创建的,因此比较容易获得专家级的结果,又由于共享出来的是模型,因此避免了数据泄露和隐私泄露的问题。

 3、AIOps 平台能力体系

 


    AIOps 工做平台的能力体系主要功能是为 AIOps 的实际场景建设落地而提供功能的工具或者产品平台,其主要目的是下降 AIOps 的开发人员成本,提高开发效率,规范工做交付质量。AIOps平台功能与通常的机器学习(或者数据挖掘)平台极为相似此类产品国外的好比Google的AutoML(https://cloud.google.com/automl/),AIOps平台功能模块图以下:

     AI建模服务能力示意图以下:

     具体的工具或者产品应具有如下功能或模块:
  1. 交互式建模功能:该功能支持用户在平台上交互式的进行模型的开发调试,经过简单的方法配置完成模型的构建。
  2. 算法库:用户能够在算法库中找到常见经常使用的算法直接使用,算法按照用途分类,以供用户方便的使用。
  3. 样本库:样本库用于管理用户的样本数据,供用户建模时使用,支持样本的增删改查等基本操做。
  4. 数据准备:该功能支持用户对数据进行相关的预处理操做,包括关联、合并、分支路由、过滤等。
  5. 灵活的计算逻辑表达:在基本经常使用的节点功能以外,用户还须要自由的表达一些计算逻辑,该需求主要是经过让用户写代码或表达式来支持。
  6. 可扩展的底层框架支持:平台自己要可以灵活的支持和兼容多种算法框架引擎,如Spark、TensorFlow等,以知足不一样的场景以及用户的需求。
  7. 数据分析探索:该功能是让用户可以方便快捷的了解认识本身的数据,用户只有基于对数据充分的认识与理解,才能很好的完成模型的构建。
  8. 模型评估:对模型的效果进行评估的功能,用户须要依据评估的结论对模型进行调整。
  9. 参数以及算法搜索:该功能可以自动快速的帮助用户搜索算法的参数,对比不一样的算法,帮助用户选择合适的算法以及参数,辅助用户建模。
  10. 场景模型:平台针对特定场景沉淀的解决方案,这些场景都是通用常见的,用户能够借鉴参考相关的解决方案以快速的解决实际问题
  11. 实验报告:模型除了部署运行,相关挖掘出来的结论也要可以造成报告,以供用户导出或动态发布使用。
  12. 模型的版本管理:模型可能有多个不一样的版本,线上运行的模型实例可能分属各个不一样的版本,版本管理支持模型不一样版本构建发布以及模型实例版本切换升级等。
  13. 模型部署应用:模型构建完成后须要发布应用,模型部署应用功能支持模型的实例化,以及相关计算任务的运行调度管理。  

4、AIOps 团队角色 


     AIOps做为一个团队,由不一样角色组成,通常有三种不一样角色,他们是运维专家、数据科学家、智能运维研发工程师,如下介绍三种角色分工:

     1)运维工程师:  能从业务的技术运营中提炼出智能化的需求点。在开发实施前可以考虑好需求方案规范数据格式。前期能够经过仿真手法探索和验证方案可行性起草合适的算法方案。
  • 特征:具备丰富的运维领域知识、熟悉较为复杂的运维问题、具有解决运维难题能力。
  • 职责:运用机器帮助运维人员完成基础性和重复性的基层运维工做;人工处理机器还不能处理好的运维难题;基于经验对于较为复杂的运维问题给出最终决策—不断训练机器。
    2)运维数据工程师:针对来自于运维工程师和算法方案进行理解和梳理,完成最终落地方案的输出工做;在工程落地上可以考虑好健壮性、鲁棒性、敏捷性等,合理拆分任务,保障成果落地,以提高最终业务运营质量。
  • 特征:具有编程、数学、统计学、数据可视化、机器学习等能力。
  • 职责: 致力于智能运维平台架构、模型标准、数据分析方法;不断应用最新的机器学习技术设计优化智能运维算法;监督智能运维系统性能并实施优化和改进。
    3)运维开发工程师: 负责进行平台相关功能和模块的开发,以下降用户使用门槛,提高用户使用效率。而且将运维数据工程师交付的数据经过友好的方式展示给用户。
  • 特征:良好的开发语言基础、大数据处理技术能力。
  • 职责:数据采集、自动化处理、实现和运用算法等。

     角色协同关系以下图:

5、AIOps 常见应用场景 


     AIOps 围绕质量保障、成本管理效率提高的基本运维场景,逐步构建智能化运维场景。

  • 在质量保障方面,细分为异常检测、故障诊断、故障预测、故障自愈等基本场景;
  • 在成本管理方面,细分为指标监控,异常检测,资源优化,容量规划,性能优化等基本场景;
  • 在效率方面,分为智能变动、聊天机器人等基本场景。

   (注:三者之间不是彻底独立的,是相互影响的,场景的划分侧重于主影响维度。)

    不管是效率提高,质量监控,仍是成本优化,都离不开最基础的数据采集,它是整个AIOp的基石。 AIOps提升运维生产力的一种方式就是把质量处理流程中的人力部分尽量的都替换成机器来作。在机器的分析过程当中系统运行过程当中的每个部件都须要数据支持。不管是海量数据采集、仍是数据提取方面都离不开大数据技术。

    从数据采集的层面来看,运维数据的采集每每是实时的,数据采集端须要具有必定分析能力,综合考虑用户流量、隐私服务器压力等多个因素,尽量的下降无效数据的采集,增长有价值信息的上报
    从数据提取的层面来看,运维的数据是多样化的,历史数据、流数据、日志数据、网络数据、算法数据、文本和NLP文档数据,以及APP数据、浏览器数据、业务系统运营指标数据等,从这些海量的数据中提取出正真有价值的指标化数据并可视化是进一步分析决策的前提条件。
    而成本优化和效率的提高一样离不开数据的支撑。例如,开始实施成本优化的AIOPS前,须要尽量多的收集目前的服务器、网络设备、应用服务、数据库等的性能信息,应用日志信息,tracing信息,以便对成本优化的效果进行评估。例如在搭建智能客服机器人的时候,就须要提供充足的问题库和相应的答案才可以创建好一个较优的模型。

  三大方向的各阶段能力描述以下所示。

5.一、质量保障方向       

      质量保障是运维的基本场景之一,随着业务的发展,运维系统也在不断的演进,其规模复杂度、变动频率很是大,技术更新也很是的快,与此同时,软件的规模、调用关系、变动频率也在逐渐增大。
      在这样背景下,须要AIOps提供精准的业务质量感知、支撑用户体验优化、全面提高质量保障效率。

  异常检测:

  • 运维系统中常见的两大类监控数据源是:指标文本前者一般是时序数据,即包含指标采集时间和对应指标的值后者一般是半结构化文本格式,如程序日志、Tracing等。随着系统规模的变大、复杂度的提升、监控覆盖的完善、监控数据量愈来愈大、运维人员没法从海量监控数据中发现质量问题。智能化的异常检测就是要通过AI算法,自动、实时、准确地从监控数据中发现异常,为后续的诊断、自愈提供基础。异常检测的常见任务包括对数据源的异常检测,保证数据质量,以及对指标和文本的异常检测。
  1. 数据源异常检测:数据源会由于一些不可避免的缘由存在一些异常数据,这些异常数据占比虽然很低,可是每每会引发整个指标统计值的波动,使得统计结果偏离真实的用户体验。AIOps须要自动、实时的动态设置阈值,去除数据源中的异常数据干扰,并可以区分系统真正发生异常时候的故障数据和数据源自己的异常数据,这种判断依赖于一些外部信息。
  2. 指标异常检测:包括单指标异常检测及多指标异常检测。
  • 单指标异常检测:时间序列指标的异常检测是发现问题的核心环节,传统的静态阈值检测为主的方式,阈值过高,漏告警多,质量隐患难以发现;阈值过低,告警太多引起告警风暴,干扰业务运维人员的判断。AIOps经过机器学习算法结合人工标注结果,实现自动学习阈值、自动调参,提升告警的精度和召回率,大幅度下降人工配置成本。
  • 多指标异常检测:运维过程当中有些指标孤立来看可能并无异常,可是综合多个指标来看,可能就是异常的。有些单指标表现是异常的,可是综合多个指标来看可能又是正常的。AIOps须要可以综合多个指标综合评判系统指标异常,提升告警的准确性。

     3. 文本异常检测:文本日志常是在特色条件下触发生成的,并遵循必定的模板,即半结构化文本。传统的日志检测有两种方式:

  • 根据日志级别:如Info、Warning、Critical进行报警,但因为其设定不许确或不知足实际须要,致使准确性差
  • 经过设置规则:匹配日志中特定字符串进行报警,但该方法依赖依赖人工经验,且只能检测已知和肯定模式的异常。
  • AIOps须要经过天然语言处理、聚类、频繁模式挖掘等手段,自动识别日志出现的反常模式,结合人工反馈和标注,不断进行优化、完善。

 故障诊断:

  • 异常检测实现了运维人员对数据的感知,有了数据以后,智能分析能够进一步解放运维人力,提升运维效率,故障诊断是智能分析的核心部分,主要包括基于人工故障库的故障诊断和基于数据挖掘的故障诊断
  1. 基于人工故障库的故障诊断:平常运维过程当中,运维人员积累了大量的人工经验,运维过程当中的大部分故障都是重复的、人工可以识别的异常。重复问题的定位浪费了大量的人力并且人工确认过程每每是比较滞后的。AIOps把人工专家经验固化下来,对常见问题实现分钟级内自动诊断,运维人员收到的告警信息中就须要包括故障定位的结果信息。
  2. 基于数据挖掘的故障诊断:人工经验可能存在误差,人工认为的缘由可能并非问题的根因,当有些故障首次发生没有人工经验能够借鉴的时候故障根因也难以定位。尤为随着微服务的发展,业务的组网变得更加复杂,模块多带来的消息路由多、依赖多,问题的定界定位分析更为困难;人工故障决策效率挑战巨大。 对于已知故障,AIOps可以综合故障数据和人工经验自动提取故障特征,生成故障特征库,自动匹配、自动定位故障、对于未知故障AIOps须要根据故障特征推演出可能的故障缘由,并在人工确认后加入的故障特征库。

 故障预测:

  • 故障的出现通常不是忽然的,就好比网络故障来讲,每每从丢包开始到网络不可用是有一个演变的过程,依据海恩法则,每一块儿严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患,开展主动健康度检查,针对重要特性数据进行预测算法学习,提早诊断故障,避免服务受损;常见场景:磁盘故障预测、网络故障预测(根据交换机日志的交换机故障预测)、内存泄露预测等等。

 故障自愈:

  • 智能分析实现了故障的诊断和预测,智能执行根据智能分析的结果实现故障自愈。传统的故障自愈的决策主要靠人的经验,人的经验可以覆盖的故障范围是有限的,并且人工没法保证7*24随时能够当即决策与处理。AIOps可以提供完善的自动化平台在故障智能分析以后自动决策,实现自愈;常见场景:版本升级回退、DNS自动切换、CDN智能调度、智能流量调度等。
  • 故障自愈是根据故障诊断的结果的输出(问题定位和根因分析),进而进行影响评估决定“解决故障”或“恢复系统”的过程。影响评估是对故障以后所产生的影响范围(系统应用层面、业务执行层面、成本损失层面等等)输出评估结果,并根据这个评估来决定要采用什么解决手段,甚至生成解决手段的执行计划。

5.二、效率提高方向

   效率提高是运维的基本场景之一,随着业务的发展,运维系统的总体效率的提高就成为了运维系很是重要的一环。在这样的背景下,除了增长人力是远远不够的,还须要AIOps提供高质量,可维护的效率提高工具。

  智能问答:

  • 运维的目标是为了支持稳定,可靠的业务运行,而业务与业务之间既可能有类似性,又可能有差别性。但因为知识背景和对业务的认知差别每每出现如下状况
  1. 不一样的业务人员或开发人员每每会询问运维人员一些类似的问题,运维人员的答案也是很是相似的,但人力被重复消耗。
  2. 面对同一个问题,运维人员的回答可能会出现差别,例如表达方式、措辞等,缺少标准化可能形成误解。
  • AIOps智能问答系统经过机器学习、天然语言处理等技术来学习运维人员的回复文本,构建标准问答知识库从而在遇到相似问题的时候给出标准的统一的回复。这样不只能够有效地节省运维人员的人力成本还可以使得提问获得更加及时的回复。

 智能决策:

  •  许多运维管理工做都须要各类各样的决策,包括扩容、缩容、制定权重、调度、重启等内容。那么可能面临以下问题
  1. 运维人员能够根据本身的业务经验制定相应的决策。可是不一样的业务有着各自的特色,不一样的运维人员也有着本身的业务经验。如何将运维人员的这些经验有效地传承是个问题。
  2. 人的认知局限性,运维场景的复杂性可能致使最有经验的运维人员遗漏掉某些“不起眼”的“重要细节”,显然准确的决策还依赖足够充足的细节。
  • AIOps智能决策一方面能够将运维人员的决策过程数据化,构建决策支持知识库,从而实现经验积累。另外一方面因为系统掌握了从全局到细节的数据,再结合决策支持知识库,能够为更加准确的决策提供最有力的支撑。

容量预测:

  • 运维工做不只仅包含对当下的决策和处理,每每还须要根据业务的诉求对将来作出合理的规划,包括扩容的预测,缩容的预测等。因为对将来的规划时常存在不肯定性那么规划过程每每须要大量的数据来支持,还须要大量的推演来肯定。而人工预测的方式,一方面须要投入大量人力;另外一方面运维人员的能力可能存在差别,使得推演的结果品质不尽一致。
  • AIOps智能预测借助大数据和机器学习能力,结合运维人员的有效评估经验,甚至业务发展模式以及政策等,对目标场景实现高效的推演过程,最终使预测结果趋近合理范围。这样一来,不可是人力得以节省,关键在于因为预测效率的提高,使得过去难以重复耗时耗力的人工预测过程变得能够应需而变,不断修正预测结果,最终使业务诉求得到最佳预测收益。

5.三、成本管理方向   

      成本管理方向是当公司内部的业务日益增多的时候,如何在保障业务发展的同时,节省没必要要的开支,有效地控制成本。成本是每一个企业都很关注的问题,如今业界的资源利用率广泛偏低,平均资源使用率能作到20%以上是不多的。
      AIOps 经过智能化的资源优化,容量管理,性能优化实现IT成本的态势感知、支撑成本规划与优化、提高成本管理效率。

  成本优化:

  • 在成本优化方向,须要采起高可用的设计,提供更加合理的服务,包括接入层、业务层、存储层等。
  1. 在接入层须要提供合理的健康检查机制,更加智能的负载均衡算法,限定流量等工做。
  2. 在业务层不只须要去除DB的强依赖,使用合理的降级,还要进行合理的压测、监控以及动态的负载均衡。
  3. 在存储层须要作的事情是容灾等关键工做。这样的话,可使得内部数据的质量获得大量提高,外部数据的优先接入和动态选择。
  • 对于设备采集的周期控制这个问题来讲,过晚的设备采购可能会影响到业务的正常上线或扩展,而过早的采购也可能形成成本的浪费。因而AIOps 须要创建合理的模型并创建更好的规划,并据此计算更准确的设备采购计划,也能对成本进行更好的控制。

  资源优化:

  • 公司的运营成本优化项目一直是公司成本预算的关键一步。优化问题包括设备的优化、带宽、码率的优化等等。只有进行了合理的资源优化,才可以使得公司的成本获得有效的控制。不一样的服务的资源消耗类型是不同的,包括计算密集型,包括存储密集型等等;而对于同一个服务在不一样的时间点资源消耗也是不同的。
  • 对于一个企业来讲,识别不一样服务的资源消耗类型,识别每一个服务的资源瓶颈,实现不一样服务间的资源复用是下降成本的重要环节。根据资源应用的性能指标能够大体分类成如下类别:
  1. 计算密集型:CPU使用率较高,常见于须要大量计算资源的搜索、推荐、数学计算等场景中
  2. 内存密集型:占用的内存使用率较高,如缓存服务
  3. IO密集型:网络IO繁忙或者磁盘IO操做繁忙,常见于爬虫、消息管道、分布式存储等服务中。
  • 大型互联网公司里动辄上千上万的应用数,很容易有应用由于业务变化已经访问量不断缩减甚至已经下线,可是线上还占用着大量的资源,经过对应用的性能指标分析,筛选出各项性能指标都很低的应用,就能够识别出这些“被遗忘” 的应用,就能够跟业务负责人进行核对进行缩容或者下线。
  • 目前大部分公司都已经使用了虚拟化或者docker技术,同一个物理机上的不一样虚拟机或容器已经进行了很好的细粒度资源分配和隔离,因此对于同一台物理机能够进行混合部署不一样类型的应用,如计算密集型应用、存储密集型应用、IO密集型应用混部在同一台物理机上,以提升更大的资源利用率,甚至必定量的“超卖”(经过共享部分资源,实现分配的总的资源数超过物理机的资源数)。对于一些灵活的计算任务:如Spark、Storm等计算类任务,还可使用按时分配的策略,如白天运行在部分服务器上,并且夜间须要运行大批量计算的报表等任务时,利用业务应用夜间资源使用率低的特色把部分任务分配到业务应用所在的服务器上运行,充分利用这些业务应用的服务器的计算资源,提升总体利用率。 
  • AIOps经过密度管理、特性管理、碎片管理、木桶管理等方法,优化企业不一样服务器的配比,发现并优化资源中的短板,提供不一样服务的混合部署建议,最终实现智能化降成本方案分析服务。

  性能优化:

  • 性能的调优一直是运维的重要一环。若是性能优化得当则会减小实际的运算量,减小内存方面的滥用,提高服务器的性能。运维人员在其中并不能保证及时发现全部潜在的性能问题,不少时候也不知道什么的系统配置才是最优的系统配置,何时的权重配比才可以达到最佳的效果。AIOps 可以根据现网的实际状况,进行智能地调整配置,智能发现性能优化策略,提供智能化的优化服务。

6、AIOps 实践路径建议

 


 

   6.一、未实现自动化运维时

       AIOps的开展,受限于自动化数据采集,网络、磁盘、成本方面的工做难以深刻发展。建议聚焦质量保障的原子场景。

   6.二、已经实现自动化运维时    

            详见下文。
   6.2.一、质量保障方向

   6.2.二、效率提高方向

   6.2.三、成本管理方向

7、AIOps 实施及关键技术

 


 

      为了实现成本管理、效率提高、质量保障的场景,根据Gartner的定义,AIOps产品或平台应包含下图所示的要素:

  1. 数据源:大量而且种类繁多的IT基础设施
  2. 大数据平台:用于处理历史和实时的数据
  3. 计算与分析:经过已有的IT数据产生新的数据例如数据清洗、去除噪声等
  4. 算法:用于计算和分析以产生IT运维场景所须要的结果
  5. 机器学习:这里通常指无监督学习,可根据基于算法的分析结果来产生新的算法

   7.一、数据采集

  • 数据采集:负责将智能运维所须要的数据接入至AIOps平台,所接入的运维数据类型通常包括(但不限于)日志数据、性能指标数据、网络抓包数据、用户行为数据、告警数据、配置管理数据、运维流程类数据等。
  • 数据采集方式可分为无代理采集以及有代理采集两种:
  1. 无代理采集为服务端采集:支持SNMP、 数据库JDBC、 TCP/UDP监听、 SYSLOG、 Web Service、消息队列采集等主流采集方式。
  2. 有代理采集:用于本地文件或目录采集、容器编排环境采集、以及脚本采集等。         

   7.二、数据处理

  • 针对采集数据进行入库前的预处理,数据从非结构化到结构化的解析、数据清洗、格式转换以及数据(如性能指标)的聚合计算,处理工做主要体如今几个方面:
  1. 数据字段提取:经过正则解析、KV解析、分隔符解析等解析方式提取字段
  2. 规范化数据格式:对字段值类型重定义和格式转换
  3. 数据字段内容替换:基于业务规则替换数据字段内容,好比必要的数据脱敏过程,同时可实现无效数据、缺失数据的替换处理
  4. 时间规范化:对各种运维数据中的时间字段进行格式统一转换
  5. 预聚合计算:对数值型字段或指标类数据基于滑动时间窗口进行聚合统计计算,如取1分钟CPU平均值

   7.三、数据存储

  • 数据存储是AIOps平台的数据落地的地方,能够根据不一样的数据类型以及数据的消费和使用场景,可选择不一样的数据存储方式。数据主要可分为以下几类:
  1. 数据须要进行实时全文检索、分词搜索:可选用主流的ElasticSearch引擎
  2. 时间序列数据:性能指标,主要以时间维度进行查询分析的数据, 可选用主流的rrdtool、graphite、influxdb等时序数据库
  3. 关系类数据以及会汇集在基于关系进行递归查询的数据可选择图数据库
  4. 数据的长期存储和离线挖掘以及数据仓库构建,可选用主流的Hadoop、Spark等大数据平台

   7.四、离线和在线计算

  • 离线计算:针对存储的历史数据进行挖掘和批量计算的分析场景,用于大数据量的离线模型训练和计算,如挖掘告警关联关系,趋势预测/容量预测模型计算,错误词频分析等场景。 
  • 在线计算:对流处理中的实时数据进行在线计算,包括但不限于数据的查询、预处理和统计分析,数据的实时异常检测以及部分支持实时更新模型的机器学习算法运用等。主流的流处理框架包括Spark Streaming, Kafka Streaming, Flink, Storm等。

   7.五、面向 AIOps 的算法技术

  • 运维场景一般没法直接基于通用的机器学习算法以黑盒的方式解决,所以须要一些面向AIOps的算法技术,做为解决具体运维场景的基础。有时一个算法技术还可用于支撑另一个算法技术。 常见的面向AIOps的算法技术包括:
  1. 指标趋势预测:经过分析指标历史数据,判断将来一段时间指标趋势及预测值,常见有Holt-Winters、时序数据分解、ARIMA等算法。该算法技术可用于异常检测、容量预测、容量规划等场景。
  2. 指标聚类: 根据曲线的类似度把多个KPI聚成多个类别。该算法技术能够应用于大规模的指标异常检测,在同一指标类别里采用一样的异常检测算法及参数,大幅下降训练和检测开销。常见的算法有DBSCAN, K-medoids, CLARANS等应用的挑战是数据量大曲线模式复杂。
  3. 多指标联动关联挖掘:多指标联动分析判断多个指标是否常常一块儿波动或增加。该算法技术可用于构建故障传播关系,从而应用于故障诊断。常见的算法有Pearson correlation, Spearman correlation, Kendall correlation等应用的挑战为KPI种类繁多关联关系复杂。
  4. 指标与事件关联挖掘: 自动挖掘文本数据中的事件与指标之间的关联关系, 好比在程序A每次启动的时候CPU利用率就上一个台阶。该算法技术可用于构建故障传播关系,从而应用于故障诊断。常见的算法有Pearson correlation, J-measure, Two-sample test等。应用的挑战为事件和KPI种类繁多,KPI测量时间粒度过粗会致使判断相关、前后、单调关系困难。
  5. 事件与事件关联挖掘:分析异常事件之间的关联关系把历史上常常一块儿发生的事件关联在一块儿。该算法技术可用于构建故障传播关系,从而应用于故障诊断。常见的算法有FP-Growth、 Apriori、随机森林等,但前提是异常检测须要准确可靠。
  6. 故障传播关系挖掘:融合文本数据与指标数据,基于上述多指标联动关联挖掘、指标与事件关联挖掘、事件与事件关联挖掘等技术、由tracing推导出的模块调用关系图、辅以服务器与网络拓扑,构建组件之间的故障传播关系。该算法技术能够应用于故障诊断,其有效性主要取决于其基于的其它技术。

参考资料


相关文章
相关标签/搜索