AIOps:自适应机器学习异常检测

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
云备份 Cloud Backup,100GB 3个月
简介: 以下内容来自【2021阿里云开发者大会】中的内容分享,本次分享的题目是《AIOps:自适应机器学习异常检测》,该分享意在阐述机器学习算法在企业中的落地实践,通过算法和算力尽可能的提升企业运维人员的效率,为业务的快速发展保驾护航。

以下内容来自【2021阿里云开发者大会】中的内容分享,本次分享的题目是《AIOps:自适应机器学习异常检测》,该分享意在阐述机器学习算法在企业中的落地实践,通过算法和算力尽可能的提升企业运维人员的效率,为业务的快速发展保驾护航。

分享人:

  • 阿里云SLS 刘贵阳(悟冥)、胡文杰(笃林)

接下来正式进入本次分享:

业务快速发展和传统监控难以支撑之间的矛盾

1. 回顾运维监控人员的日常工作

  1. 当一个新业务上线前,运维人员都需要明确服务的部署情况,确定监控对象,以及监控对象的一些可观测性指标,并根据此完成相关日志数据的采集和处理;这里面会涉及到很多日志采集、指标加工等一系列脏活累活;
  2. 当确定了监控对象的黄金指标后,往往都需要先适配一组规则:某个接口每分钟的平均请求延时不要超过多少毫秒;单位分钟内的错误请求数量,不要超过多少等等;
  3. 随着业务逐步对外提供服务,以及各种运营活动的加推,我们运维监控同学一定会面临两个突出的问题:误报太多和漏报的风险,那么这两个问题都在现阶段都需要人工介入,进行阈值的调整;尤其是漏报的问题,更加需要人工盯屏的形式,设计新的监控规则去覆盖一些事件;

上述的场景中还都是在业务指标监控中所涉及到的,还没有提到服务的全链路的监控问题,服务部署环境中机器的监控问题。

2. 困难和挑战:监控对象呈爆炸式增长

我们的上层业务的部署形式逐渐想容器化和微服务化方向演进。我们的应用程序部署有之前的单物理机到单个容器中。这里带来了几个问题:

  • 传统的部署模型,监控对象较为确定,对应的观测指标也比较确定,且存活的生命周期较长,因此可以较好的完成异常的监控;
  • 服务在新的架构上部署后,其中涉及的组件和模块都增加了很多,其大都混部在相同的物理机器上,彼此之间的会有较大的影响,且服务对象的生命周期偏短,较难进行完整的监控;

且在公司中往往会有上百的研发人员,一般会维护上千的应用和服务,每个月多有上百次的变更,每分钟会涉及到几十甚至几百GB的监控数据。在这样庞大且复杂的规模下,传统的基于规则的监控无法更好的满足服务的稳定性要求。

3. 困难和挑战:传统的监控规则泛化能力弱

在我们的服务过程中,我们会发现传统监控规则泛化能力弱的几个典型问题:

  • 基于人工规则的监控会有漏报、误报、规则阈值无法自适应的问题
  • 如第一排中第一张图所示:其中时序曲线描述的是一个周期性的批处理作业的CPU利用率的曲线,我们可以看到,周期性的突刺信号是正常的,而图中有两个点是有问题的,对于特别到的突刺点来说,我们通过阈值的方式是可以较好的抓到的,但是对于图中红圈标注的点来说,通过规则的形式是很难写出来的;
  • 第二张图描述的是线上服务的内存的曲线,我们可以看到前面是比较平稳的,在某个时刻发生变更后,机器的内存上涨,对于传统的监控规则来说,后续的超过阈值的时间点都是异常,但是真实的业务场景中,更合理的是关注到某个时刻指标发生了突变,并且持续了一段时间后趋于稳定,那么后续的异常点就不应该持续的报出来;
  • 新业务的指标监控无法复用现有的监控规则
  • 对于上图中,我们可以看到两条关于访问请求的时序指标,通过几个维度来分析下:
  • Y轴的范围差距是比较大的,第一张图是按照K(千)来划分的,第二张图是按照Mil(百万)来划分的;
  • 我们可以看到指标的波动性还是比较大的,且曲线的形态差异较大,我们使用的传统的同比、环比、均值等策略无法实现我们的监控预期


自适应时序监控的设计方案

在两年前,我们在思考一个事情,能否充分利用机器学习的能力来解决监控系统中时序异常检测的问题,将更多的基于《规则+人工经验》的能力,逐步转移到《算法+经验知识》的系统能力。让可观测性平台具备自适应、自学习、自反馈的能力。接下来,让我们一起来看下SLS在这个问题上的探索。

1. 智能时序系统的基础能力

  • 系统应该具备的基础能力如下:
  • 准确且全面的发现异常:这里要求系统的对于时序异常识别的准确率和召回率都要求较高,这个是智能系统需要的最为核心也作为基础的能力
  • 同时系统需要具有一定的适应能力,因为系统是给“人”来使用的,算法判定的结果是通过数值的角度去分析的,异常不等同于故障(这里我们去区分下不同的定义:一个是Incident、一个是Problem)
  • 算法的输出结果应该是结构化的,且其异常应该具备可比较的分数,且分数可以量化到[0, 1]之间;便于对接后续的业务系统
  • 同时支持较好的扩展能力:可支持数十万时序监控对象进行较为复杂的模型监控

2. SLS的解决方案

  • 在图中第一部分描述的是我们服务部署环境中所需要的关注的一些服务的相关日志,主要包含了:程序日志数据、组件日志数据、以及对应的时序指标数据、外带上系统的事件数据等,这些数据统一都可以按照Log模型、Metric模型和Trace模型统一存储在SLS平台中。
  • SLS平台提供了丰富的数据处理手段,可以针对原始的数据做行处理,解决杂乱数据规整、富化、分发的能力,同时平台上提供了兼容SQL92的查询分析能力,可以快速的定制SQL的调度任务,提取相关的指标数据,供后续的分析和可视化。
  • 用户可以开启智能巡检服务,消费结构化的指标数据,通过智能算法产生结构化的异常事件,通知到用户,用户可以对异常事件进行相关的反馈,后续我们会进行逐步跟告警管理系统打通,解决事件跟踪和关系推断的问题。
  • 对于上图中,左边:数据接入和数据预处理部分、右边:告警管理这两部分会有单独的详细介绍,这里我们着重介绍下智能巡检服务。

3. SLS智能巡检服务简介

具体的算法原理:采用无监督学习算法,自动识别实体的数据特征,根据数据特征选择不同的算法组合,针对数据流实时建模,完成异常检测任务,并根据用户的打标信息,训练监督模型,实现算法的不断优化,提高准确率。具体拆解如图中流程图所示:

  • 巡检系统的处理对象是监控指标,当监控对象有较多的历史数据时,系统会进行时序画像的构建:主要是从业务的周期性、趋势性、波动性等几个维度去刻画,能较好的学习时序的状态;当某个对象的时序数据较少时,我们会先退化到统计建模的策略,主要去分析指标的局部统计特征,当数据逐步累积到一定量后,会进行详细的时序画像的构建;
  • 我们构建的是一个时序的巡检系统,处理的对象是实时的数据流,逐点送入时序建模(Time2Graph算法),会对接我们的异常判别模型,输出对应的标准异常事件后会通过钉钉机器人的渠道,将结果通知到用户,用户可以选择对系统的输出进行反馈,平台会自动的收集到您的反馈信息,完成特征和标签的对应,训练出对于异常事件样本的监督模型,将模型应用到异常判别器,优化系统给用户的输出,真正做到千线千面;
  • 值得一提的是:这套系统中核心的时序建模算法演化自《Time2Graph系列算法》,核心作者就是我们团队的 胡文杰 同学,相关论文已经发表在AAAI、WSDM、TKDE顶级数据挖掘会议上,感兴趣的各位可以翻阅论文,欢迎讨论交流。

在SLS平台中的使用展示

智能巡检服务目前已经在线上正式对外发布,各位可以查询SLS官方文档提供了详细的操作说明,您在使用过程中遇到问题可以联系我们,希望时序巡检服务可以解决您在日常监控中反复配置若干规则的繁琐和低效,提升运维同学的幸福指数。


大家在使用过程中,遇到问题可以通过如下方式联系我们

image.png


相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
目录
相关文章
|
13天前
|
机器学习/深度学习 存储 自然语言处理
【机器学习】LoRA:大语言模型中低秩自适应分析
【机器学习】LoRA:大语言模型中低秩自适应分析
45 5
|
25天前
|
机器学习/深度学习 数据采集 运维
构建基于机器学习的异常检测系统
【6月更文挑战第7天】构建基于机器学习的异常检测系统,通过收集和预处理数据,进行特征提取和选择,然后选择SVM、随机森林等算法训练模型。评估指标包括准确率、召回率、F1值,旨在识别安全威胁、系统故障等异常,保障系统稳定。未来将持续优化性能并探索新技术。
|
2月前
|
机器学习/深度学习 人工智能 运维
【机器学习】Adaboost: 强化弱学习器的自适应提升方法
在机器学习领域,集成学习是一种通过结合多个弱模型以构建更强大预测模型的技术。Adaptive Boosting,简称Adaboost,是集成学习中的一种经典算法,由Yoav Freund和Robert Schapire于1996年提出。Adaboost通过迭代方式,自适应地调整数据样本的权重,使得每个后续的弱学习器更加关注前序学习器表现不佳的样本,以此逐步提高整体预测性能。本文将深入探讨Adaboost的工作原理、算法流程、关键特性、优势及应用场景,并简要介绍其实现步骤。
34 1
|
2月前
|
机器学习/深度学习 运维 算法
利用机器学习进行异常检测的技术实践
【5月更文挑战第16天】本文探讨了利用机器学习进行异常检测的技术实践,强调了在大数据时代异常检测的重要性。机器学习通过无监督、有监督和半监督学习方法自动识别异常,常见算法包括KNN、LOF、K-means和GMM等。异常检测流程包括数据准备、特征工程、选择算法、训练模型、评估优化及部署。机器学习为异常检测提供了灵活性和准确性,但需结合具体问题选择合适方法。
|
2月前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
2月前
|
机器学习/深度学习 人工智能 运维
人工智能平台PAI 操作报错合集之请问Alink的算法中的序列异常检测组件,是对数据进行分组后分别在每个组中执行异常检测,而不是将数据看作时序数据进行异常检测吧
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
8月前
|
机器学习/深度学习 运维 算法
自适应机器学习异常检测
自适应机器学习异常检测
62 1
|
机器学习/深度学习 运维 资源调度
【吴恩达机器学习笔记】十三、异常检测
【吴恩达机器学习笔记】十三、异常检测
90 0
|
机器学习/深度学习 数据采集 人工智能
时间序列异常检测:统计和机器学习方法介绍
在本文中将探索各种方法来揭示时间序列数据中的异常模式和异常值。
239 0
|
机器学习/深度学习 数据采集 存储
一种用于入侵检测的自适应集成机器学习模型
一种用于入侵检测的自适应集成机器学习模型
一种用于入侵检测的自适应集成机器学习模型