导读:企业数字化使得运维智能化转型成为必然,宜信积极推进 AIOps 在科技金融企业的落地实践。本次主题是探索 AIOps 落地的一种形式:经过行为采集、仿真模拟、主动感知等手段,从用户侧真实系统使用体验出发,结合全维监控数据,更加有效的实现智能异常检测和根因分析。前端
早期的运维工做比较简单,通常是先由系统集成工程师及研发工程师研发完项目后交付出来,再由负责运维工做的人员从后台作一些操做,保证系统正常运行。react
图1算法
随着软件研发行业和技术的发展,运维的工做也变得愈来愈丰富。现阶段运维的工做与价值主要集中在三个方面:数据库
大量业务上线,运维人员须要保障快速高效地为系统提供资源、应对业务变动、响应操做请求。后端
运维的目标是保障质量及系统的稳定性。也就是说,要保障业务和系统7*24小时在线上稳定运行,为用户提供流畅温馨的体验。为实现这个目标,运维的相关工做包括:缓存
随着公司规模的不断壮大,投入产出比也愈来愈被重视。运维的另一个价值在于下降成本。主要体现为:安全
图2服务器
如图所示,横坐标表明服务规模。公司业务不断增加,服务规模也相应增加,此处咱们简单理解为这是一个线性的变化,不考虑业务的暴增。网络
然而,业务规模增加反映到运维的复杂度增加上最少体如今三个层面:架构
随着服务规模的增加,运维复杂度呈现指数级增加,那运维人员是否也随着增加了呢?纵观各司,答案是否认的。出于节约成本的考虑,各司各岗位人员并不会随着服务复杂度增长而扩张,反而是愈来愈趋于平稳。基于这个比例,至关于运维复杂度愈来愈高的状况下,运维人员愈来愈少了。
中间的差距如何来弥补呢?这就须要运用到运维手段了。即上图所示的:运维质量=运维人员 X 运维手段。运维人员要经过各类运维手段来解决运维困境,进而推进运维的发展。
图3
如图所示,运维的发展大体分为四个阶段:
手工阶段比较好理解,研发人员交付一个系统,运维人员经过手工执行操做保障这个系统正常运行。此阶段的运维工做没有什么标准可言。
随着企业IT系统愈来愈多地引入运维,且全部业务都变成系统形式在线上运行,运维工做的重要性愈来愈高,但同时带来的是运维和研发、业务人员工做中的沟通壁垒。这时就衍生出了一些标准,其中最主要的是ITSM(IT Service Management,IT服务管理)。ITSM的目标是把平常全部的运维工做,包括流程、信息管理、风险控制等,经过系统建设和标准化固定下来,像流水线同样,人员只须要按照标准参与便可。
随着互联网大爆发,服务交付模型愈来愈多,用户对互联网和IT的要求愈来愈高,ITSM的缺点也愈来愈明显,主要表现为时间过长、成本太高,不能适应快速多变的需求。因而从工程或运维的角度自发出现了一种文化:DevOps,DevOps强调运维、研发及QA工程师工做的高度融合,要求运维从工程交付的角度不断迭代。
同时从企业IT管理或运营诉求出发也要解决快速演进的问题,因而演化出了标准ITOM。ITOM和ITSM很像,区别是把“S”改为“O”,即把Operation自己及其带来的各类自动化工具归入模型中,包括主机、运营、发布系统等等。
随着行业对IT运维要求的不断提升,不管是AIOps仍是ChatOps,都面临一个严重的问题:人处理不过来了。从工程角度来看,运维面临的现状是异构性很是强,须要引入三方应用和各类各样的设备,交付模式也愈来愈多,运维复杂度出现指数级增加。为解决上述问题,Gartner适时提出了“AIOps”的概念,这里的“AI”表明的是人工智能,经过机器人的参与将人工智能技术体系带入到运维的各个环节,帮助解决运维问题,运维发展也由此进入智能化阶段。
图4
BMC给了AIOps定义是:
AIOps refers to multi-layered technology platforms that automate and enhance IT operations by 1) using analytics and machine learning to analyze big data collected from various IT operations tools and devices, in order to 2) automatically spot and react to issues in real time.
简单来讲,就是引入多层平台,使用大数据分析和机器学习等方法,增强IT运维自动化的能力。
上图底部三张小图分别表示201六、201七、2018年的AIOps架构演进,都是围绕Machine Learning和Big Data来建设的。
图5
AIOps涉及的技术、场景和算法如图所示。
图6
上图所示是一个比较典型的AIOps平台架构。
底层是全部数据的来源,咱们把大量数据收集起来,经过实时分析交付到算法平台。算法平台包括三部分,首先是基于规则和模式进行简单的分类,而后经过域算法,最后经过机器学习和AI的方式影响Operation,让自动化运行起来。
若是你们了解AI,就会发现这其实就是一个AI智能体,包括从Sensing到Thinking到Acting,即感知到思考到执行的过程。
宜信正在落地“中台化战略”,将可复用的技术集中到技术中台、数据/智能中台、运维中台,统一提供服务,节约了人力和资源,提升需求响应速度。
图7
宜信的IT运营架构分为四部分:
运维如何使用数据/智能中台的数据和应用呢?咱们创建一个通用的管道,把运维产生的有价值的数据传输到数据/智能中台,数据/智能中台经过对这些数据进行分析,并基于运维须要的场景反馈智能应用。
图8
上图所示是运维管理架构。
从左到右是从运营到运维,也能够说是从运营到DevOps,左边更偏向于ITSM的概念,右边更偏向于DevOps的概念。从上到下是从入口到执行。 你们可能更熟悉DevOps,以这部分为例介绍上图所示架构。
咱们的建设方式是从自服务入口,它被对接到持续集成和持续发布平台,持续集成和持续发布平台会利用全部的自动化建设,包括主机、域名、数据库、负载均衡及其余组件,实现自动化,最终咱们会把线上的系统数据收集起来,包括指标、跟踪、日志等,这就是监控的部分。
上述DevOps部分的运维管理架构对于交付2C产品是很是适合的,但对于像宜信这样,有大量系统是面向内部人员的,要求可以快速响应用户的问题,而且能快速沉淀更有价值的运维请求和数据,单一的运维管理架构不足以知足上述要求。
所以咱们也会建设ITSM部分,即偏运营、偏管理、偏审核的部分。ITSM部分以服务台为入口,涉及的内部管理包括请求管理、事件管理、问题管理、变动管理、需求管理和编排管理等,涉及的信息管理包括资产管理和CMDB。 下面咱们经过一个实例来看ITSM的价值点。
系统出现一个故障:业务人员在提交一个用户的手机号时报错,提示系统出现故障请联系开发人员。若是是在DevOps领域处理这个问题就很简单,把故障报给研发,研发就给解决了。但这样处理,下次可能还会出现一样的问题。
若是将故障放到ITSM部分进行分析,就能让问题获得更根本的解决。发现故障后,经过请求管理把这件事告诉后台人员,后台人员看到请求后将故障升级为“事件”并提交给研发人员,研发人员分析得知引起故障的缘由是手机号触发了风险控制平台,而风险控制平台因为刚刚上线因此状态码的解释并不充分,研发人员将平台关闭,故障处理完成,同时将该“事件”升级成“问题”。研发和产品人员对该问题分析后认为须要变动相关服务,提供更细的状态码和更清晰的错误提示,因而将“问题”提交成“需求”。最终“需求”完成,“问题”解决,以后相似的状况也不会再发生。
前文提到运维中台和数据/智能中台之间有一个通用管道,运维中台负责采集全部数据,进行简单加工,并传输给数据/智能中台,智能中台分析处理数据并反馈数据及智能应用给运维中台。
图9
上图所示为数据采集和处理的架构。
采集的数据形式包括动态和静态两种:动态数据包括业务、应用、链路、技术设施、全网、日志数据等;静态数据包括配置、拓扑、工单数据等。
咱们经过自有系统将全部数据收集起来,经过统一管道(统一管道包括kafka、宜信开源的DBus,DBus会对结构化的数据进行配置或预处理。)传送到实时分析平台,对数据进行后期加工,包括相关运算,最终数据会分类存储到数据中台的数据库中,好比关系、指标、文档/日志型数据会存储在ElasticSearch中、结构化数据会存储在Hive中,其余历史数据会存储在HDFS中。
图10
运维中的智能场景如上图所示。
智能中台根据运维中台提供的工单、编排规则、CMDB、画像、Tracing、KPIs、Logs等数据,经过算法为运维中台建设一系列模型和应用。
重点介绍一下编排规则。咱们用的编排工具是StackStrom,咱们把自动化的每一个动做都抽象成一个原子(atom),好比重启服务、重启机器、修改配置,这些atom经过StackStrom创建成一个个的工做流,这些工做流是咱们有经验的运维专家创建的一个更高级抽象、更语义化的模型。好比我想发布一个系统,包括扩容机器、无缝切换、涉及前端负载均衡的调整、后端应用的调整,这些都会是编排规则。
智能平台经过算法,包括NLP分析、根因分析、趋势预测、异常检测等,产生两个模型:知识图谱和搜索引擎。这两个模型应用于运维中台的问答后台、编排管理和监控系统中。
图11
如图所示是智能问答/执行的案例,用户经过服务台的会话窗口提出问题,这些问题以请求的方式发送到问答后台,后台利用搜索引擎和知识图谱的数据自动化反馈信息,包括问答、动做执行等。
图12
目前的AIOps研究最多的是KPIs,将日志等各类数据,经过根因分析、趋势预测、异常检测等算法,生成对应的算法/模型,将这些算法/模型应用到监控系统中,就是监控报警部分。监控报警结果会展现到展板上,通知用户。
图13
咱们的业务运行在IT环境中,这个IT环境就是承载业务的IT,包括数据中心、服务器、各类系统、三方应用、网络用户的设备等。而随着云平台的建设和微服务的发展,不少部分运维人员观察不到,再加上出于投入产出比的考虑,一些部分咱们不会去观察,所以,实际上运维人员可以观察到的IT远远小于真正承载业务的IT。
在运维可观察的IT环境中,真实观察到的IT数据每每仅包括交换机的流量包、进程的运行状态、网卡流量、CPU使用率、请求数等数据。 若是要建设AIOps,数据的完整是很是重要的,观察的IT环境越多,获取的数据越完整,越有利于AIOps的建设,这时就须要用到主动感知。
图14
Wikipedia对主动感知的定义以下:
Active Perception is where an agents' behaviors are selected in order to increase the information content derived from the flow of sensor data obtained by those behaviors in the environment in question. ——Wikipedia
通俗来讲,主动感知实际上是赋予每一个参与者一个身份,这个参与者会主动获取环境中的数据,同时会根据从环境中获取的数据主动进行进一步的发现并获取新的数据,目的是增长得到数据的信息量、信息价值。
上图展现了一个比较典型的主动感知流程,重点来看感知部分。感知器从环境中经过情景感知、情景理解和预见的方式去感知环境,产生一个决策,决策产生一个动做,动做反馈到感知。
图15
主动感知在人工智能领域并非一个陌生的名词,它已经有大量的应用,包括:
图16
AIOps引入分布式主动感知:
经过对真实 IT 环境的参与者创建模型,有目的的获取相关 IT 数据,并基于获取到的数据持续优化获取的数据和方法,以实现对真实 IT 实时完整的监控。
传统的监控方式是被动的,经过被动采集是不可能采集到全部数据的,没法保证数据的真实完整。若是可以对全部的IT参与者进行建模,经过模型去感知真正参与者的身份什么样的、有哪些数据,就能够采集到更加实时和完整的数据。
主动感知的建模涉及到本地建模和全局建模。本地建模只须要关注IT参与者是什么,好比一个职场、一个主机;全局建模须要考虑全国有多少个职场、都分布在哪里、如何将它们联动起来。
主动感知的动做包括两个方面:有主动筛选的被动感知和有主动行为的主动感知。
主动感知的方法有两种:基于规则和基于智能算法(好比贝叶斯决策树)。基于规则的方法是目前使用最多的。
主动感知的数据类型包括画像数据、参与者与参与者之间的关联关系、主动筛选和主动行为的细节捕捉、定位跟踪等。
主动感知系统包括全网Agent、业务Agent、网络Agent、应用Agent,这些都是咱们的感知器。
图17
用一个例子来细化什么是分布式主动感知。
全网感知的背景:宜信在全国各地有不少职场,这些职场都是重要的参与者,每一个职场里有不少业务人员在使用业务系统,须要对这些职场进行监控。
咱们用分布式主动感知的方法,首先创建模型,即职场网络。在职场放一个Agent,由于职场分布在全国各地,自己是全网的,所以称之为全网Agent。感知的内容包括出口有哪些;网络、身份识别;这个网络有多大;边缘探测;还包括内部一系列的统计数据,同时还会作内部内网的风险监测,甚至会经过模拟数据、诱导攻击来发现内网是否存在安全隐患。
图18
图19
上图展现的是咱们全网感知的一些示例,包括职场信息、组织信息、模拟监控数据、动态监测配置,不展开细述。
图20
上图展现的是网络感知模型,咱们首先进行建模,建模的点,也就是网络的参与者,即每一个交换机,并实时监测和扫描网络内部全部服务器。经过这个模型能够直观且实时看到异常细节数据,保证网络质量。
图21
上图展现了网络感知的示例。
图22
除了上述应用之外,还有主机/应用/业务感知等等。
图23
分布式主动感知的收益包括:
图24
主动感知在AI领域的应用已经有不少成功案例,但在AIOps领域仍是新兴事物,还存在不少问题:
图25
宜信是相对比较早进行AIOps实践的公司,咱们在赋能AIOps同时也注重将经验反馈给社区,本文所介绍的主动感知技术也计划开源,与你们一同探讨和进步。
分享嘉宾 | 宜信研发架构师肖云朋
文稿整理 | 宜信技术学院 Cynthia
内容来源 | WOT峰会
原创首发 | 宜信技术学院