开发者社区> 阿里云MVP> 正文

日志服务在CDN流量指标中的异常检测实战(上)

简介: 阿里云开发工程师悟冥带来日志服务在CDN流量指标中的异常检测实战的分享,悟冥负责日志服务平台中时序异常和时序预测的算法研发,提升系统发现异常、处理异常的能力,致力于让算法更好的协助开发和运维人员。本次专题围绕以实时的视频流媒体数据为例,介绍常用时序异常检测算法、异常维度分析的具体应用。

本次专题主要包括四个方面内容,第一部分介绍AIOps平台,以及具备的能力和功能。第二部分讲解阿里云日志服务平台的作用,以及支撑AIOps的应用。第三部分为目前关注的异常检测算法的介绍。第四部分以一个实际的场景作为案例介绍流量场景中的实战,并加以分析。

本文为第一部分和第二部分,点击这里,查看第三部分和第四部分。

想看精彩直播回放,请点击这里。

以下为精彩直播内容整理:

一、AIOps平台

大家眼中的AIOps平台
在最近三年内,AIOps平台被国内的研发团队所熟知,早在2015年AIOps平台就已经出现,之后做了一些相关整合。根据2017年文献中相关的定义,AIOps平台作为一个人工智能的系统,可以集成大数据、AI智能算法以及机器学习相关的方法,用以增强IT运维的操作,包括服务的可用性、性能监控、系统中各个事件之间的关联分析以及IT服务的管理和自动化的运维。

根据2019年相关的信息可以得知,基于中心化的监控方式和监控工具将会一直存在,并且会一直提供一些基础的数据采集、加工和分析可视化的方法。同时可能会引入一些流计算和人工智能的方法,通过实时的计算和分析,加上一些算法的辅助,能够解决一些关于单目标或者相关事件以及不同操作之间的分析逻辑。
image.png

如上图所示,最基础的是数据层面,其中最直接的来源是监控数据,用来采集机器的各种指标、服务的各种指标或者线上的一些日志。日志采集完成之后,经过一些加工转换,先通过一些简单的数据统计的方法、查询的方法或者可视化的方法做成报表。再通过报表和可视化的方法去梳理各个维度、各个业务或者关注的KPI之间的一些关系,实现定位和告警。再向上一层会涉及到一些不同数据源,包括一些事件、程序运行的日志、机器的指标及变更的人员等。将所有的东西关联在一起进行综合的分析,得到相应的结果。再向上是针对整个中心会存在一些资源画像和服务画像以及各种各样的profile,通过这些profile可以定期的或实时的报出当前系统的服务质量、状态以及链路是否瓶颈或高危。这些信息通过机器的方法实现统计、整理及关联,得到一些初步的结论。最顶层是指将所有的东西放在一起作为一个大脑。因为在语音领域或者图像领域,通常习惯将信息做整合,形成一个类似的大脑,将多元的信息输入进去,可以对这些数据进行预判,甚至可以进行调度。

目前能达到最终的AIOps系统层面,可能会分为几个阶段,根据查阅相关资料,最开始需要构建出基于服务或机器级的监控指标。第二阶段需要有一个能力很强并且能分析大数据的平台,可以通过自己搭建,但是要具备一些较大规模分析数据的能力。针对AIOps场景,首先要明确知道AIOps场景中需要解决的问题,根据这些问题使用的算法特征是通过原始数据进行加工、转换得到的,涉及到数据清洗的工作。接下来阶段五为日志的分析平台,阶段六为场景实施,比如巡检场景或者容量预测场景。阶段七为生产的线上运行,涉及到一些操作,包括模型版本的管理、模型的能力是否能够很好地处理模型的变更、频繁的变更对模型的影响是否很大。

接下来需要逐渐的完善一些标签,因为基于现有的建摸能力,有监督学习的领域实现的效果还是很好的,但是实际需要大量的样本,不断反馈以及建立标签的过程是长期的并且细致的工作。最后使用一套AIOps大脑来实现异常的判别,包括异常的时间和原因,以及判别是否需要人工或机器自动的做一些扩缩容、切流量等操作。

我眼中的AIOps平台
image.png

如上图所示,最底层与上文所描述的是相似的,应该会有很多的监控日志、事件日志、服务日志及人员日志。人员对系统的影响是很大的,比如发布变更、平台的操作记录。不同日志存储的底层模型是不一样的,比如监控日志是一个时序信息,它的底层更多的倾向于时序数据库。事件日志更多的是一些变更信息,可能结构会很复杂。服务日志可能多种多样,比如端的、流的以及服务端的,各种各样的行为模式日志都要记录。人员信息的变更不会很大,是一个结构化的数据。针对这些数据来说,统称为异构存储,涉及到比较复杂的数据采集以及第三方数据的接入。

往上一层为算力平台,涉及到异构计算,包括离线计算、实时计算,并且都依赖于底层的数据清洗及加工。不管基于什么样的平台,对于复杂结构的日志解析,其效果都不是很好,必须具备一套强大的数据清洗和转换的功能,使数据规整,通过规整的数据能较好的得到样本特征。

再往上一层涉及到基于离散或实时样本的算法研发,算法涉及到一些规则,比如某台机器的CPU很高、主干服务上的延迟很高,同时会作为异常现象,通过基于简单的逻辑规则来判断。不同的服务在不同的规则下会有不同状态,基于不同规则和状态下做出的决策就是基于规则的决策。在文本层面和时序层面可能会存在模式的不同,比如版本发布。

例如在某t1时刻发布了B版本,B版本上线之后在一分钟之内可能没反应,但在5分钟之内后台可能会出现大量的异常行为,很有可能是由于发布导致的问题。预测分为很多种,其中磁盘容量预测使用简单的线性模型就可以解决。线上内存可能存在线性增长,也会出现不定期的下跌情况,这种情况的出现可能是程序的泄露,下跌是因为线上的内存垃圾做了些回收。通过发掘出来这些模式,以及模式分析和预测的方法可以定位出机器出现的异常,按照这个趋势发展,可以知道这台机器很有可能在一个时间点达到系统内存的上线,导致线上服务崩溃。

异常包括单节点异常、多机异常及模式异常等。诊断需要在服务的链路层面上解决一些问题。可能发生一个异常,这个异常仅仅是一个结果,想要知道异常的根因,可以查看上游服务或者边界服务,在时间线上分析查看哪些属于异常。当系统被入侵后会出现一些异常操作,包括根据时间点进来的端口信息,这些统称为溯源。同时涉及一些人工的规则,领域的知识以及资源画像。资源画像可以通过AI算法解决一些比较稳定的服务或者主干服务。一旦画像发生偏移,机器就会发生故障,同时可以做一些预测。

基于所有的这些信息,需要做出决策,最初是使用人工决策,就是所谓的自动化运维。根据不同的场景写很多脚本,并且触发一些自定义的脚本规则,这些大部分是常见的重复性的运维工作,可以减少运维成本。对于确定性的异常也知道应该怎样解决,可以提高运维的效率。经验决策与人工决策大部分是重合的,此外还有一种决策为智能体决策,是指让AI了解针对异常怎样做出决策,达到及时止损的目的。目前,智能体决策还是比较难实现的,最常用的还是人工决策和经验决策。对于任意一种操作,首先要衡量这种操作的风险性以及有效性,需要考虑这种操作是否能快速的止损,往往这种复杂操作不是单点能解决的。

二、阿里云的日志服务平台

  • 日志是物理世界的数字化载体

image.png

日志服务指的是针对文本数据,如上图中第一张图是文本日志,第二张是监控日志,第三张为结构化的日志,比如创业信息。后几张为监控终端的一些设备,比如移动端、PC端以及路由器站点的一些日志。还有一些服务存在,这些服务经过采集、加工和转换后,用户就可以方便的介入。

  • 让用户专注在“分析”上,远离琐碎的工作

image.png

采集的方法有很多种,比如上图中的Logtail采集,它可以让用户的数据能够低成本的传到中心化区域。同时基于现有的数据通过一些索引的方法可以实现在日志中的关键词查询,以及复杂circle的分析,还可以做一些简单的AI相关操作。在数据分发部分的应用中,可以使用这部分数据做建模和分析。所有的数据和报表都可以通过图表的形式展示出来,使得用户可以灵活的可视化自己的状态、服务和指标。

  • 面向Sec/Dev/IT Ops日志处理,分析引擎

image.png

输入数据源分为很多种,如上图所示。数据加工主要是针对杂乱无章的数据做一些转换和清洗的工作。这部分对于结构化的数据分析是非常有意义的。由于杂乱无章的数据很难统一管理,会导致查询的效率降低和建模的复杂度提高。接下来是上下文实时的分析,以及机器学习相关的方法,最后通过一些告警的方法,将一些信息告知第三方。

扫描下方二维码,加入开发与运维钉钉交流群,查看更多精彩内容。
开发与运维技术群.jpg

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
上一篇:树莓派4来袭,看完秒懂物联网那些事儿 下一篇:阿里云Kubernetes平台构建和管理实践(上)
+ 订阅

阿里云最有价值专家,是专注于帮助他人充分了解和使用阿里云技术的意见领袖。

官方博客
官网链接