算法落地思考:如何让智能运维更智能

news/2024/5/3 4:06:52/文章来源:https://blog.csdn.net/m0_46700908/article/details/126832645

嘉宾 | 王鹏   整理人 | 西狩xs

出品 | CSDN云原生

AIOps是人工智能与运维的结合,能够基于已有的运维数据,利用人工智能算法,通过机器学习的方式帮助企业提升运维效率,解决自动化运维无法管理的问题。

2022年8月30日,在CSDN云原生系列在线峰会第16期“AIOps峰会”上,复旦大学计算机科学技术学院教授、擎创科技首席数据科学家王鹏深入阐述了智能运维的现状,全面分析了智能运维在算法落地时遇到的问题,分享了他在智能运维方向中算法落地的探索与尝试。

智能运维的现状

当前有众多学者对智能问答系统进行研究,提出了诸多算法和技术,在Google Scholar中,与智能问答系统相关的词条高达35万,但智能问答系统在实际生活中的效果却差强人意,并不是真正的“智能”。

近些年来,智能运维算法一直在快速地发展迭代,随着智能运维研究成果和应用场景的不断落地,算法效果也在不断提升。

指标异常检测

指标异常检测是当前落地最多的智能运维场景,该场景下数据容易准备、效果容易验证。对某个指标的某个时间序列进行标注后,很容易看出哪些异常没有被捕获,以及捕获了哪些不应该捕获的异常。

针对指标的异常检测,研究者们提出了大量异常检测算法,包括单指标异常算法、多指标的异常检测算法、基于统计或深度学习的异常检测算法以及有监督、无监督的异常检测算法。

但在实际落地过程中,指标异常检测的效果往往不尽如人意。主要问题如下:

1、误报太多

  • 阈值设置紧,为了消除漏报,造成了大量的误报;
  • 异常数量多,运维人员难处理,不得不忽略所有的指标异常告警。

2、模型/参数难以设置

  • 不同类型的指标,其波动情况、周期性、变化情况不同,所适合的模型和参数也不同;
  • 无法单独为指标设置模型和参数。

3、缺乏有效的反馈和修正机制

  • ​​​​​缺乏问题发现能力,难以对指标异常进行类型、主机、时间段等方面的展示和分析,难以对异常进行交互式探索,无法判断异常是否应该报告;
  • 缺乏基于反馈的模型调整能力,难以应对“这个不是异常,后续检测中不要再报了”的个性化需求。

日志/告警智能分析

当前,大量企业上线了日志实时聚类和基于日志的异常检测,以解决大规模日志无法靠人工处理、基于规则的方法维护性差等问题,但在日志智能分析实践过程中,同样存在若干问题。

1、模板质量难以有效的评估

  • 模板数量非常大,若逐个进行人工判断耗时太长;
  • 不同的应用目标对模板的要求不同,如下图所示,左侧是两条进程消失的告警数据,二者除进程名以外完全一样,应该被合并;而右边的Android日志则需要进行主观判断确定是否需要合并。因此,除选择模板外,模板还与后续应用场景有关系,不能一概而论。

2、缺乏有效的反馈和修正机制

  • 缺乏基于反馈的模板调整能力,难以应对“这种模板应该根据这个变量拆分”、“这个变量应该被泛化”之类的个性化需求;
  • 运维专家和算法人员之间的沟通困难,在真实场景中,运维专家与算法团队被实施团队隔离开,反馈链条长,二者沟通不顺畅。

3、根因定位效果欠佳

  • CMDB质量普遍不高,可能存在系统变更但CMDB无法及时反映最新场景的情况;
  • 真正的故障原因可能不存在告警数据中,无法进行根因分析。

问题分析

从指标异常检测和日志/告警的智能分析两个典型算法场景可以看出,算法在真实运维场景中依然存在着各种各样的问题。

原因1:发现问题困难

发现问题困难是指由算法得出结果的正确性难以判断。

1、算法需要定制化。通用算法只有在定制化之后才能应用在具体场景中,其需要与运维数据、业务特点、运维目标等进行深度融合。因此,算法结果的评判带有一定的主观色彩,无法通过客观因素来衡量。

2、被监测对象的规模非常庞大。算法可能需要监控十万、百万以上的指标,此外,需要监测的日志或告警数据规模也十分庞大,这使得我们难以通过重跑算法对效果进行验证。

3、实施过程中运维专家和算法人员的脱离。运维专家与算法人员之间沟通不畅,会使得标签数据的获取较为困难,难以通过反馈衡量算法效果,进而影响算法的迭代优化。

原因2:解决问题困难

即使发现了上述问题,但想要从算法和训练层面对其进行解决依旧困难重重。

1、算法普遍缺乏反馈修正能力。对于“这个异常我不需要,后续检测中不要再报了”、“这两个模板应该合并掉,这个变量不能被泛化”之类的反馈,当前的模型尤其是深度学习模型很难有效吸收。

2、算法调参困难。异常检测场景下,不同指标适合的模型与参数不同,难以为每个指标都找到最佳模型与参数。此外,“指标规模×模型个数×参数取值个数”所构成的搜索空间巨大,操作实施困难。

误区1:论文中的算法Vs.真实场景需要的算法

学术领域当前有大量关于异常检测的论文,异常检测在学术方面已被研究得非常充分,但这并不代表其能够在实际场景中得到良好运用。以日志模板提取为例,下图列举了一些离线、在线的日志模板提取算法。

 

这些算法在真实场景中的应用包括两个过程:POC过程和生产环境。根据在线、离线的差异,POC过程可以分为两类:

  • 根据离线数据寻找合适的模板,再基于日志模板进行异常检测;
  • 通过Kafka消费生产环境或测试环境的数据,在线实时处理。

真实生产环境中,数据规模庞大,可以根据一定时间范围内的数据训练模板,确定模板后再进行线上数据的处理。

可以看出,更为合理的日志提取算法应该是:

  • 小批量测试数据上的离线算法;
  • 基于模板集合接上流式数据上的在线算法。

离线和在线算法只是智能运维过程的一部分,此外还需继续完善模板并提供定制化的算法,如长日志模板提取算法、多行日志模板提取算法、特殊日志模板提取算法、反馈算法及参数自动设置算法等。

对于长日志而言,现有算法的普遍处理方法是截取其前面固定长度的词进行分析,显然这可能存在误差。对于多行日志、特殊日志的模板提取,目前的研究并不充分。此外,反馈算法、参数自动设置算法等也比较少。

因此,学术领域中对算法研究的充分程度与真实场景中算法的使用程度之间并不能完全划等号。

误区2:“完全依靠算法实现自动化运维”现实吗?

自动化运维有可能被实现,但仍需要较长时间去探索,更为现实的目标是将算法作为一种辅助手段,让运维更加高效。

  • 在大数据量场景下,用算法提高效率。
  • 算法可以用来提高算法的易用性。
  • 算法可以作为一种定位故障过程的辅助手段,灵活快速地查询和探索数据。
  • 算法作为一种积累知识的方式,构建知识图谱。

智能运维三要素

算法能够落地需要三个要素:算法设计能力、运维场景的理解能力和平台的工程化能力。

  • 算法设计能力。客户的需求是个性化的,需要根据客户的需求设计针对性的算法,此外还需通过反复调参实现数据的个性化。
  • 运维场景的理解能力。算法只是手段,运维才是最终的目标,算法必须结合运维场景,只有深入研究并理解运维场景,才能发挥出算法的效用。
  • 平台的工程化能力。针对目前海量的数据环境,大规模的运维数据处理需要高效稳定的数据平台,此外还要同算法进行高效的结合,提高平台的数据处理分析能力。

探索工作

异常检测

除异常检测算法外,我们目前还在算法和参数推荐、基于可视化的算法选择以及相似异常查询方面做出探索。

1、算法和参数推荐。分别为每一个指标推荐其最适合的算法模型及最优参数,其中涉及每个指标的特征提取,根据特征构建分类树,最后基于分类树匹配各类指标适合的模型。

​​​​​​​2、基于可视化的算法选择系统。在该系统中,能够编写类似SQL的查询语言,可以选择要测试的数据集及算法,并强调各个算法的关注维度,如纯性、召回率、性能等。此外,还支持算法效果的可视化,能够清晰地看到不同算法查取异常之间的差异性。

​​​​​​​3、相似异常查询。查询工具能够从原始数据中提取出相似的异常,运维专家基于此决定对异常的处理动作。该功能可以促进算法效果反馈效率,运维专家可以批量甄别异常检测情况,无需逐一进行甄别和反馈。

告警精细化管理

在做告警场景之前,会将告警模板区分成不同类型,包括高频事件、周期性事件、新增事件和阶段性事件等。

  1. 高频告警是在不同时期都会发生的告警事件,可能由于阈值太严导致,在处理中可以对此类告警进行调整或删除。
  2. 周期性告警是在固定周期内发生的告警事件,这种情况的背后可能蕴含了某些问题,值得被关注。
  3. 新增告警和阶段性告警是某个时间点开始或结束的告警事件,可以结合业务具体分析。

因此,业务理解及数据的深层次析对于智能运维至关重要。

数据探索工具

在智能运维的探索过程中,数据管理和数据处理的工具必不可少。作为辅助手段的数据探索工具,能够让运维人员也可以灵活地分析数据,进而辅助算法的优化和落地。

1、基于拖拽式的分析流程实现

该流程主要面对实施人员和运维专家,两者可以根据“拖拉拽”的方式,结合不同分析算法搭建分析流程。同时,该流程融合了异常检测、聚类、场景挖掘等多种算法,并支持输入数据格式的智能化学习。

 

 

2、基于自然语言的问答系统

在问题出现时,运维人员多会进行假设和判断,该过程需要使用查询工具进行排查和定位。虽然当前有诸多工具能够提供基于SQL、ES的查询,但如果可以基于自然语言进行查询,运维人员就能更方便地进行个性化数据探索。

 

3、面向时间关联的复杂查询处理系统

如下图所示的HDFS日志示例,当我们想查询其中三个模板是否经常一起出现时,SQL查询较为复杂,PLQ查询更加简洁高效,

4、构数据的统一查询系统

该系统融合了时间序列、文本序列、CMDB图数据及调用链图数据,实现四种类型数据的统一查询。

 

总结

算法正在智能运维中发挥越来越大的作用,但算法落地仍有大量问题亟待解决。算法不能一蹴而就,需要赋予其持续优化能力。不妨将算法作为一种运维的辅助手段,使运维人员也能灵活地分析数据,在运维过程中使其变得更高效。


本篇文章整理来自@ 西狩xs,由CSDN修订完成 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_7009.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring底层原理初探

一,spring原理初探 1,bean的创建生命周期 userService.class --> 推断构造方法 --> 实例化对象 --> 依赖注入(属性填充) --> 初始化前(PostConstruct) --> 初始化 (Initializingbean) --> 初始化后(AOP,bean的后置处理器…

Wireshark分析https流量

这里写自定义目录标题本文介绍使用wireshark分析https流量的方法。适用chromium内核的浏览器和firefox浏览器,前提是这些浏览器内核都支持如下选项: –ssl-key-log-file 浏览器配置 添加启动参数 例如: firefox.exe --ssl-key-log-filec:/s…

Python中setdefault()通过键查找字典中对应的值

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 字典中根据键k查找键k对应的值v 如果没找到键k,则创建键k并赋值为default setdefault() [太阳]选择题 以下Python代码中setdefault(d, 666)的返回值是什么? myDic {&…

java基于微信小程序的大学生个人家庭理财产品 uniapp小程序

为了方便操作,从多方面把用户的个人支付,个人收入等财产管理的数据,以及他们的生活结余和消费统计,用科学统计的方法把这些数据存储在财务管理软件之中。文中着重论述了该系统的功能与实现,如数据流程与存储、管理等功能,并对关键的技术作了较详…

动态规划 - 背包问题 回文串分割

目录 1.背包问题 1.1 题目描述 1.2 画图分析 1.3 思路分析 1.4 代码示例 2. 回文串分割 2.1 题目描述 2.2 思路分析 2.3 代码示例 1.背包问题 1.1 题目描述 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 和数组 V 表示每个物品的价值.问最多能装…

ROS+Arduino学习导航贴

前言 原先写了一些ROSarduino学习记录的帖子,发现每次找起来非常麻烦,所以做一个汇总帖,以后需要的话,找起来就方便了。 关于我用的开发板,一开始学习的时候,我用的开发板是arduino uno这类的&#xff0c…

[笔记]MySQL 插入导致死锁

线上遇到的 MySQL 插入导致死锁,问题排查. 场景复现 MySQL 版本: 5.7.36 数据库存储引擎: InnoDB 事务隔离级别: REPEATABLE-READ 1. 创建测试表 DROP TABLE IF EXISTS tb_task; CREATE TABLE tb_task (id int(11) NOT NULL AUTO_INCREMENT,task_id int(11),order_id int(1…

猿创征文 |【数据结构】2个例题带你理解图的遍历:广度优先搜索

目录 1、定义 2、算法分析 3、算法实现 4、性能分析 💟作者简介:大家好呀!我是路遥叶子,大家可以叫我叶子哦!❣️ 📝个人主页:【叶子博客】 🏆博主信息:四季轮换…

jquery实现云音乐歌词高亮和自动滚动效果

书接上篇文章 实现效果: 一、歌词高亮 首先要判断当前歌词和播放器的当前时间 循环歌词数组treatLyrics,拿到每条歌词的时间与播放器的当前时间playAudio.currentTime进行比较 treatLyrics.forEach((i, index) > { // console.log(i); // console.…

目前最好用的NAS系统是什么?

NAS被定义为一种特殊的专用数据存储服务器,包括存储器件(例如磁盘阵列、CD/DVD驱动器、磁带驱动器或可移动的存储介质)和内嵌系统软件,那么目前最好用的nas系统是什么? 常见的NAS系统有哪些 Nas 系统一般都是基于 Li…

Uplink Resource Allocation in IEEE 802.11ax

一、基本信息 题目:IEEE 802.11ax中的上行链路资源分配 作者:Sudeep Bhattarai, Gaurang Naik, Jung-Min (Jerry) Park 摘要:MU-OFDMA使得多个用户可以在更小的子信道(即资源单元,RUs)中同时进行传输,从而提高802.11ax…

如何从零开始解读产品经理行业分析

上次一起了解了什么是产品经理,产品经理PM和PD在不同类型公司的作用。了解产品经理对当前的应用产品中的重要作用。是不是有点憧憬,其实憧憬是美好的,但是还是要走进现实具体怎么去做,一步一步脚踏实地的,一步一步走入…

【Linux入门】— 腾讯云服务器的搭建

꧁ 各位大佬们好!很荣幸能够得到您的访问,让我们一起在编程道路上任重道远!꧂ ☙ 博客专栏:【Linux知识】❧ ⛅ 本篇内容简介:Linux小白到精通 — 学好Linux从学会服务器搭建开始! ⭐ 了解作者&#xff1…

Java操作Zookeeper框架

Zookeeper框架 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hb…

Java Double equals()方法具有什么功能呢?

转自: Java Double equals()方法具有什么功能呢? 下文笔者将讲述equals()方法的功能简介说明,如下所示: equals()方法的功能 java.lang.Double.equals()方法的功能: 将当前的Double对象同一个对象进行比较, 当Object是一个Double对象&…

【牛客 - 剑指offer】JZ8 二叉树的下一个结点 Java实现

文章目录剑指offer题解汇总 Java实现本题链接题目方案一 中序遍历递归代码一 设置flag标记代码二 获取整个arrayList的大小方案二 分类直接寻找(分情况讨论)思路代码(版本一)代码(版本二)剑指offer题解汇总…

计算机毕业设计成品java项目开发实例SSM+MySQL实现的家庭医生预约平台

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 一、项目介绍 二、项目截图 三、项目获取 一、项目介绍 java毕业设计计算机毕设项目之基于SSMMySQL实现的家庭医生预约平台_哔哩哔哩_bilibilijava毕业设计计算机毕设项目之基于SSMMyS…

记首次协助搭建服务器

一,服务器资源申请 1)使用云服务器(k8s)还是IDC服务器 云服务器VS IDC服务器 不同: 费用一样,云服务器支持动态扩容 私有云和IDC没有很大区别,只是私有云支持k8s,动态扩容方便。…

python 日志处理(基础篇)

Logging处理 日志级别等级排序:critical > error > warning > info > debug debug : 打印全部的日志( notset 等同于 debug ) info : 打印 info, warning, error, critical 级别的日志 warning : 打印 warning, error, critical 级别的日志 error : 打…

笑霸餐厅 | 瑞吉外卖项目 | 完整基础部分(后端学习笔记)

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:项目专栏 📧如果文章知识点有错误的地方,…