您的位置:  首页 > 技术杂谈 > 正文

算法实践|如何根据各类指标数据选择合适算法?

2022-04-12 16:00 https://my.oschina.net/yunzhihui/blog/5513141 云智慧AIOps社区 次阅读 条评论

云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交流社区。该社区致力于传播 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们共同解决智能运维行业技术难题,推动 AIOps 技术在企业中落地,建设健康共赢的AIOps 开发者生态。

本文由云智慧智能研究院研究员通过实践应用,对如何根据不同类型的指标数据选择合适的算法给出了如下答案

指标数据类型介绍

云智慧采用异常值剔除、重复值检验、插值、重采样等预处理及算法动态调参等方式,对收集的运维数据进行预处理,然后直接或间接地对企业的业务、中间件、运维方面的指标数据进行异常检测或预测,从而达到降低运维人员成本,提升维护效率的目的。

不同企业都有其各自的指标,这些指标可以大致归类为基础监控指标、业务指标、中间件指标以及与自身业务具有直接联系的指标等,如图1所示。基础监控指标,如cpu使用率,内存使用率,内存空闲率,磁盘使用率,磁盘空闲率等;中间件指标,如kafka堆积数量,Mysql读写次数、Redis存活状态、守护进程总数、打开文件数等;业务指标,如交易量、响应时间、响应率、成功率、错误率、请求数等;还有一些与业务直接相关的其他指标,如银行的跑批时长,券商的交易量等。

智能运维算法场景介绍

目前云智慧已有的适用于不同使用场景的算法,有单指标时序异常检测场景、单指标时序预测场景、根因分析场景、日志模式识别场景、告警降噪场景、多指标关联分析场景等。每一个场景下都有不同的算法,并且每一个算法都有其所适合的数据,如图2所示。目前应用较广泛的算法场景是单指标时序异常检测场景和单指标时序预测场景。单指标时序异常检测场景有动态基线、自动阈值、分段阈值、Tima、DW_Tima、频域分析等算法,那么针对不同的指标数据该如何选择合适的算法呢?

针对各种指标数据如何选择合适的算法

无论是基础监控指标,还是业务指标等,都有其数据特征如周期数据、周期闲忙时数据、周期趋势数据、趋势数据、平稳数据、变更数据、不规则数据等。在选择算法的时候,我们可以根据指标数据的特征去匹配适合的算法。本文将对指标数据和不同数据特征类型进行逐一介绍,并综合考虑算法本身对数据的匹配程度与算法性能的影响,为不同数据特征的指标数据推荐合适的算法

  1. 周期数据

在实际运维场景中出现最多的数据特征就是周期数据和平稳数据,周期数据一般会出现在基础监控指标中如内存、磁盘等,还有某些与自身业务直接相关的指标。周期数据绝大多数都是天周期数据,偶尔会出现周周期数据。针对周期数据进行异常检测时,优先推荐使用Tima算法,其次是动态基线算法,如下图,分别是Tima算法和动态基线算法计算周期数据的结果。

  1. 周期闲忙时数据

周期闲忙时数据一般会出现在基础监控指标的内存使用量,或者是与自身业务直接相关的指标上,如金融领域的证券市场交易量会出现这种周期闲忙时数据。闲忙时数据的特点表现为“忙”时数据值较大,“闲”时数据值较小,异常值常出现于“忙”时的数据,相对于历史“忙”时数据值过大或过小,以及“闲”时的数据相对于历史“闲”时数据值过大或过小。针对周期闲忙时数据进行异常检测时,推荐使用分段阈值算法。如下图是分段阈值算法计算周期闲忙时数据的结果。

  1. 周期趋势数据

一般针对基础监控指标里面的内存使用量,中间件指标的kafka堆积数量可能会出现这种趋势周期趋势数据,该类数据的形态特点为由周期性数据与趋势性数据叠加而成,针对这种周期趋势数据,推荐使用Tima算法。如下图是Tima算法计算周期趋势数据的结果。

  1. 趋势数据

一般针对基础监控指标里面的内存使用量和磁盘占用量会出现的趋势数据,但是一般不会长时间持续增长。业务指标里面涉及到的交易量、成功数、错误数等也会出现趋势数据,针对这种趋势数据,优先推荐使用Tima算法,其次推荐使用动态基线算法。 如下图分别是Tima算法和动态基线算法计算趋势数据的结果。

  1. 平稳数据

一般针对基础监控指标里面的cpu利用率、内存使用量、磁盘占用量,中间件指标的MySql读写数量、kafka堆积数量、Redis存活状态等,以及业务指标中的响应时间、成功率、错误率等产生的数据几乎都是平稳数据。针对这种平稳数据,首先推荐使用Tima算法和自动阈值算法,其次推荐使用分段阈值算法和动态基线算法。 如下图分别是Tima算法、自动阈值算法、动态基线、分段阈值计算平稳数据的结果。

  1. 变更数据

一般针对基础监控指标里面的内存使用量、磁盘占用量经常会出现变更数据,变更数据的特点是一段 时间 内变化不大,由于内存或是磁盘突然上升导致出现更变点(change point),或者是中间件指标的队列堆积数量等因素,针对这种变更数据,首先推荐使用Tima算法,其次推荐使用频域分析算法。此处推荐使用Tima算法是因为同样的数据量,Tima的执行效率高,执行时间约为0.083s,而使用频域分析的执行时间约为46s。如下图分别是Tima算法和频域分析算法计算变更数据的结果。

  1. 不规则数据

无论是基础监控指标、中间件指标、业务指标里都会出现一些不规则数据。针对这种不规则数据,优先推荐使用Tima算法。如下图是Tima算法计算不规则数据的结果。

总结

不同行业企业监控的数据指标形态不同、业务特点更是大相径庭,不同的 时间 序列异常检测算法往往只适配不同形态特征的指标数据。 因此很难根据企业业务特点来进行算法选择,即不能说基础监控指标的内存数据就一定适合动态基线算法。因此在选择指标数据适合的算法时,一般需要先对指标数据进行特征分析,再根据数据特征选择合适的算法。

写在最后

近年来,在AIOps领域快速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区, 旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。

社区先后 开源 了数据可视化编排平台-FlyFish、运维管理平台 OMP 、云服务管理平台-摩尔平台、 Hours 算法等产品。

可视化编排平台-FlyFish:

项目介绍:https://www.cloudwise.ai/flyFish.html

Github地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee地址: https://gitee.com/CloudWise/fly-fish

行业案例:https://www.bilibili.com/video/BV1z44y1n77Y/

部分大屏案例:

请您通过上方链接了解我们,添加小助手(xiaoyuerwie)备注:飞鱼。加入开发者交流群,可与业内大咖进行1V1交流!

也可通过小助手获取云智慧AIOps资讯,了解云智慧FlyFish最新进展!

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接