jjzjj

如果只把AIOps看做运维技术,未免也太肤浅了……

彭华盛 2023-03-28 原文
近日一篇《智能运维行业乱象:估值虚高、上市受阻、裁员频现》网文在运维圈十分火爆,有一些观点十分吸引人。今天,不对文章观点做评价,摘一小段《数智万物下运维》系列下我对金融企业智能运维的理解。

AIOps是运维的方向,但AIOps不能单纯的认为一种技术手段或技术平台,而应该是数智时代人机协同的运维模式。

一、人机协同的AIOps运维工作模式

一种新的工作模式出现,必然会对原来稳定的工作模式进行改变,改变通常会受到新挑战,所以新工作模式需要能解决当前运维工作中遇到的难题而出现。以金融行业的业务连续性管理为例,目标是提高公司的风险防范能力、有效地减少非计划的业务中断、防范运维操作风险,对于首次出现的未知异常能够利用工具量化分析并快速定位,确保在重大灾难性事件发生后能按计划恢复业务连续性是传统。在面对当前复杂的技术架构、不断引入的创新技术、快速迭代的软件版本、严峻的信息安全威胁下,传统运维团队原来被动救火式、问题驱动式、操作运维、经验运维已经很难实现企业业务连续性的保障目标。金融企业运行安全稳定,需要运维数据赋予数据洞察、辅助决策、跟踪执行的能力,提升复杂环境下的运维管理能力,即:

  • 实时获得“发生了什么?”;
  • 关联分析“为什么会发生?”;
  • 智能预测“将会发生什么?”;
  • 决策判断“采取什么措施?”;
  • 自动执行“如何快速执行?”
  • 实时感知“工作执行的效果?”
AIOps就是为了解决上述问题而生,相比传统的运维工作模式,AIOps重点不是创造一种全新的运维工作模式,而是对现有“专家经验+最佳实践流程+工具平台” 运维模式的补充,为企业运维工作提供“洞察感知、运营决策、机器执行”能力,支持向“人机协同”模式转变。

为什么是“人机协同”的模式,而不是智能化的模式呢?因为从当前AIOps的应用情况看,虽然人工智能技术领先,但当面对复杂、多变、信息不完全的环境,特别是应用于需要复杂应急保障场景时,仍不具备替代专家,更多的应用在某些特定弱人工智能领域。“人机协同”聚焦在通过机器辅助人的决策与执行,是在原来运维组织内部参与者,以及运维以外的研发、测试、厂商等协同网络上,增加机器人角色,形成人机协同的运维模式。人机协同的运维模式,最关键的角色仍是人,利用人的创造力,结合机器所提供的数据和算法,辅助人进行运维工作开展。总的来说,人机协同需要发挥人与机器人特长,形成一个融合的解决方案,后续AIOps的重点推进方向可以围绕三点:

  • “数据+算法”为运维专家赋能“实时感知、辅助决策”的能力。
  • 增加运维机器人岗位,重塑 “大计算” 、“海量数据分析”、“操作性”、“流程化”、“规律性” 、“7*24”、“人机体验”等类型的运维工作。
  • 建立数字平台化管理模式,闭环落实决策执行。

二、数据、算法、场景、知识组成AIOps关键4要素

如Gartner定义中提出,AIOps应用需要利用大数据,现代机器学习技术和其他高级分析技术,是一种相对较高门槛的工作模式。为了更好地落地AIOps,运维组织需要深刻地理解AIOps的内涵,重点实现思路:以数据为基础、算法为支撑、场景为导向,知识为扩展的AIOps4要素。

1、以数据为基础

数据为先,AIOps需要快速生产高质量数据的能力。“快速”的思路可以以“中台”思路进行建设,建立统一的数据采控、实时与批量的数据处理能力、与运维相匹配的运维算法、存储方案、主数据、指标模型等;“高质量”则从将分散数据统一、在线后形成“活数据”,以及数据质量上的治理。从技术实现看,具备实时“采、存、算、管、用”的数据流动全生命周期管理的能力。其中,数据采集是按需在线采集数据的能力;数据存储是根据数据类型、数据应用特点对数据进行归档、整理、传输、共享;数据计算包括数据标注、清洗、建模、加工、标准化、质量监控,以及为了获得数据洞察、决策、执行而对数据进行分析统计;数据管理重点围绕数据治理的,包括运维数据标准、主数据、元数据、数据质量、数据安全的管理;数据使用重点围绕数据服务角度涉及的数据目录、服务门户,以及配套的数据服务化能力。

2、以算法为支撑

算法大脑,适配、引入特定场景下运维算法,构建算法模型体系。机器学习尤其是深度学习的大规模应用,推动了人工智能的快速发展。随着国内TOB市场的火爆,AIOps上人工智能研究及应用正处于爆发期,引入AI技术的算法有三点优势:一是工作稳定性高,人工智能可不知疲倦地进行工作,在规律性问题的分析时不受环境影响。二是降低操作风险,利用人工智能取代传统人工经验操作,可更好地避免操作风险和道德风险。三是有效提高决策效率,人工智能可以快速地对大数据进行筛选和分析,帮助人们更高效率地决策。作为金融企业,一方面,由于人才、薪酬结构等方面不足,在算法的建设上应该更多地与外部供应商合作;另一方面,对算法的追求不一定是技术的先进性,事实上规律性的专家经验落地也是一种算法的实现,而且很多时候更加可靠。对于当前主流的算法参见上一节提到了的常用算法,这里不再重复。

3、以场景为导向

场景驱动,以痛点、价值期望切入点,用智能赋能运维场景,落地智能运维能力。AIOps从词来看,应该包括“AI+Ops”,是用AI赋能运维场景的模式。有了上面提到的数据底座与算法大脑,下一步是AIOps运维模式的落地,主要将围绕场景的落地,一种是利用算法赋能已有的运维场景,另一种是算法实现原来无法实现的运维场景。前者是一个快速见效的模式,后者是应对变化而做出的变化。

4、以知识为扩展

运维知识描述了大量运维领域的相关对象定义、技巧,以及排故/解决经验的信息。运维知识图谱是把运维对象不同种类的信息连接在一起而得到的一个关系网络,是对运维数据进行表达的关键技术。通过构建运维知识图谱,从海量数据中自动挖掘各类运维主体,对其特性进行画像和结构化描述,动态记录运维主体之间的关联关系。基于运维知识图谱,利用自然语义等算法技术,可以帮助IT人员实现故障链传播分析、根因定位、智能的变更影响分析、故障预测等多种AIOps场景。

三、AIOps的一些其他观点

1、建立场景地图,体系化、有节奏地落地AIOps

与AI技术在当前大部分领域的应用类似,AI是一种平台能力,而不是业务。以网上银行系统为例,PC端的网上银行解决从柜台到临柜的便利性问题,手机银行解决从鼠标键盘操作到手指划屏、随时操作的操控问题,AI的视频、语言识别等技术又给手机银行解决从触屏到沉浸智能的体验问题。在这个过程中,很多业务的本质仍未改变,所以面对AIOps,运维组织需要建立场景地图,基于场景地图分好优先级,看如何将AI的优势赋能给运维场景的具体环节。

2、“活数据”是运维智能化的基础

活数据有两个含义,一是指数据是活的,即数据全在线;二是数据被活用,即在数据不断应用中完善并产生新数据,形成数据回流。以往运维数据分析主要基于批量离线数据建立报告辅助决策,但很多运维工作场景需要实时数据分析支撑。所以,需要利用运维数据平台实现机器数据实时采控落地数据资产,再场景化实现数据消费,并建立数据应用执行的反馈不断优化数据驱动的工作流程,形成更为准确的数据。所以,实现活数据中有三个关键要素,一是构建协同网络的运维工作场景,协同网络需要打破线上工作流程孤岛,打通“人、组织、软件、硬件”之间的网络连接;二是运维组织要建立运维数据平台将生产运行的相关数据汇聚在一起,并抽象成数据服务,以便利的方式为运维场景提供价值;三要不断消费数据,在数据消费中发现问题,修正数据,挖掘数据增值服务,产生新的数据。

3、第一印象很重要

AIOps作为全新的工作模式,给用户第一印象是可靠、可用,如果第一印象是怀疑态度,对后续工作模式的运营推广会带来较大挑战。AIOps的算法最需要解决的问题是,改变人对“算法准确性”的印象,即“算法”的引入不是为了创新,而是为了确实解决真实问题而出现。以辅助故障定位为例,一个正常运作的运维组织日常很多故障通常能够通过专家经验、监控工具、有效的协作机制得到处理。引入AIOps对于故障管理的赋能,一是为了更快,二是为了更准。得益于机器的自动化、算力等特点,通过设计好的线上应急场景,“快”的问题可预测能得到解决;但对于“准”则多少有黑盒子的意味,所以在应用算法时要持谨慎的思路,解决问题远比算法先进重要。

最后,不管是运维团队中的工具研发,还是厂商,在推动AIOps模式时,都应关注一线运维专家的经验,以及落地运维模式的配套工作机制,才能将人、流程、工具与具体的“事”连接成真实可用的场景。

有关如果只把AIOps看做运维技术,未免也太肤浅了……的更多相关文章

  1. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  2. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  3. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  4. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  7. ruby - 如果它是标点符号,我怎么能从字符串中删除最后一个字符,在 ruby​​ 中? - 2

    啊,正则表达式有点困惑。我正在尝试删除字符串末尾所有可能的标点符号:ifstr[str.length-1]=='?'||str[str.length-1]=='.'||str[str.length-1]=='!'orstr[str.length-1]==','||str[str.length-1]==';'str.chomp!end我相信有更好的方法来做到这一点。有什么指点吗? 最佳答案 str.sub!(/[?.!,;]?$/,'')[?.!,;]-字符类。匹配这5个字符中的任何一个(注意,。在字符类中并不特殊)?-前一个字符或组

  8. ruby - 如果满足给定条件,则结束 ruby​​ 程序 - 2

    基本上,我只是试图在满足特定条件时停止程序运行其余行。unlessraw_information.firstputs"Noresultswerereturnedforthatquery"breakend然而,在程序运行之前我得到了这个错误:Invalidbreakcompileerror(SyntaxError)执行此操作的正确方法是什么? 最佳答案 abort("Noresultswerereturnedforthatquery")unlesscondition或unlessconditionabort("Noresultswer

  9. ruby-on-rails - 如果条件与 &&,是否有任何性能提升 - 2

    如果用户是所有者,我有一个条件来检查说删除和文章。delete_articleifuser.owner?另一种方式是user.owner?&&delete_article选择它有什么好处还是它只是一种写作风格 最佳答案 性能不太可能成为该声明的问题。第一个要好得多-它更容易阅读。您future的自己和其他将开始编写代码的人会为此感谢您。 关于ruby-on-rails-如果条件与&&,是否有任何性能提升,我们在StackOverflow上找到一个类似的问题:

  10. Ruby 计数数组对象,如果对象包含值 - 2

    我有一个数组:array=['Footballs','Baseball','football','Soccer']而且我需要计算看到Football或Baseball的次数,无论大小写和复数形式如何。这是我尝试做的,但没有成功:array.count{|x|x.downcase.include?'football'||x.downcase.include?'baseball'}编写这段代码的正确或更好的方法是什么?我正在寻找3作为答案。 最佳答案 我会将count与一个block结合使用,该block根据与您正在寻找的约束相匹配的正

随机推荐