针对各种指标数据如何选择合适的算法?
# 技术黑板报 # 第四期
推荐阅读时长:8min
云智慧智能研究院研究员根据实践经验,对不同类型的指标数据,如何选择合适的算法给出了如下答案。
章节目录
一、指标数据类型介绍
二、智能运维算法场景介绍
三、针对各种指标数据如何选择合适的算法
四、总结
一、指标数据类型介绍
云智慧采用异常值剔除、重复值检验、插值、重采样等预处理及算法动态调参等方式,对收集的运维数据进行预处理,然后直接或间接地对企业的业务、中间件、运维方面的指标数据进行异常检测或预测,从而达到降低运维人员成本,提升维护效率的目的。
不同企业都有其各自的指标,这些指标可以大致归类为基础监控指标、业务指标、中间件指标以及与自身业务具有直接联系的指标等,如图 1 所示。基础监控指标,如 cpu 使用率,内存使用率,内存空闲率,磁盘使用率,磁盘空闲率等;中间件指标,如 kafka 堆积数量,Mysql 读写次数、Redis 存活状态、守护进程总数、打开文件数等;业务指标,如交易量、响应时间、响应率、成功率、错误率、请求数等;还有一些与业务直接相关的其他指标,如银行的跑批时长,券商的交易量等。
图 1 指标时序数据场景分析
二、智能运维算法场景介绍
目前云智慧已有的适用于不同使用场景的算法,有单指标时序异常检测场景、单指标时序预测场景、根因分析场景、日志模式识别场景、告警降噪场景、多指标关联分析场景等。每一个场景下都有不同的算法,并且每一个算法都有其所适合的数据,如图 2 所示。目前应用较广泛的算法场景是单指标时序异常检测场景和单指标时序预测场景。单指标时序异常检测场景有动态基线、自动阈值、分段阈值、Tima、DW_Tima、频域分析等算法,那么针对不同的指标数据该如何选择合适的算法呢?
图 2 不同场景所适用的算法
三、针对各种指标数据如何选择合适的算法
无论是基础监控指标,还是业务指标等,都有其数据特征如周期数据、周期闲忙时数据、周期趋势数据、趋势数据、平稳数据、变更数据、不规则数据等。在选择算法的时候,我们可以根据指标数据的特征去匹配适合的算法。本文将对指标数据和不同数据特征类型进行逐一介绍,并综合考虑算法本身对数据的匹配程度与算法性能的影响,为不同数据特征的指标数据推荐合适的算法。
1.周期数据
在实际运维场景中出现最多的数据特征就是周期数据和平稳数据,周期数据一般会出现在基础监控指标中如内存、磁盘等,还有某些与自身业务直接相关的指标。周期数据绝大多数都是天周期数据,偶尔会出现周周期数据。针对周期数据进行异常检测时,优先推荐使用 Tima 算法,其次是动态基线算法,如图 3-4 分别是 Tima 算法和动态基线算法计算周期数据的结果。
图 3 Tima 计算周期数据结果
图 4 动态基线计算周期数据结果
2.周期闲忙时数据
周期闲忙时数据一般会出现在基础监控指标的内存使用量,或者是与自身业务直接相关的指标上,如金融领域的证券市场交易量会出现这种周期闲忙时数据。闲忙时数据的特点表现为“忙”时数据值较大,“闲”时数据值较小,异常值常出现于“忙”时的数据,相对于历史“忙”时数据值过大或过小,以及“闲”时的数据相对于历史“闲”时数据值过大或过小。针对周期闲忙时数据进行异常检测时,推荐使用分段阈值算法。如图 5 是分段阈值算法计算周期闲忙时数据的结果。
图 5 分段阈值算法计算周期闲忙时数据的结果
3.周期趋势数据
一般针对基础监控指标里面的内存使用量,中间件指标的 kafka 堆积数量可能会出现这种趋势周期趋势数据,该类数据的形态特点为由周期性数据与趋势性数据叠加而成,针对这种周期趋势数据,推荐使用 Tima 算法。如图 6 是 Tima 算法计算周期趋势数据的结果。
图 6 Tima 算法计算周期趋势数据的结果
4.趋势数据
一般针对基础监控指标里面的内存使用量和磁盘占用量会出现的趋势数据,但是一般不会长时间持续增长。业务指标里面涉及到的交易量、成功数、错误数等也会出现趋势数据,针对这种趋势数据,优先推荐使用 Tima 算法,其次推荐使用动态基线算法。如图 7-8 分别是 Tima 算法和动态基线算法计算趋势数据的结果。
图 7 Tima 算法计算趋势数据的结果
图 8 动态基线算法计算趋势数据的结果
5.平稳数据
一般针对基础监控指标里面的 cpu 利用率、内存使用量、磁盘占用量,中间件指标的 MySql 读写数量、kafka 堆积数量、Redis 存活状态等,以及业务指标中的响应时间、成功率、错误率等产生的数据几乎都是平稳数据。针对这种平稳数据,首先推荐使用 Tima 算法和自动阈值算法,其次推荐使用分段阈值算法和动态基线算法。如图 9-12 分别是 Tima 算法、自动阈值算法、动态基线、分段阈值计算平稳数据的结果。
图 9 Tima 算法计算平稳数据的结果
图 10 自动阈值算法计算平稳数据的结果
图 11 动态基线算法计算平稳数据的结果
图 12 分段阈值计算平稳数据的结果
6.变更数据
一般针对基础监控指标里面的内存使用量、磁盘占用量经常会出现变更数据,变更数据的特点是一段时间内变化不大,由于内存或是磁盘突然上升导致出现更变点(change point),或者是中间件指标的队列堆积数量等因素,针对这种变更数据,首先推荐使用 Tima 算法,其次推荐使用频域分析算法。此处推荐使用 Tima 算法是因为同样的数据量,Tima 的执行效率高,执行时间约为 0.083s,而使用频域分析的执行时间约为 46s。如图 13-14 分别是 Tima 算法和频域分析算法计算变更数据的结果。
图 13 Tima 算法计算变更数据的结果
图 14 频域分析算法计算变更数据的结果
7.不规则数据
无论是基础监控指标、中间件指标、业务指标里都会出现一些不规则数据。针对这种不规则数据,优先推荐使用 Tima 算法。如图 15 是 Tima 算法计算不规则数据的结果。
图 15 Tima 算法计算不规则数据的结果
四、总结
不同行业企业监控的数据指标形态不同、业务特点更是大相径庭,不同的时间序列异常检测算法往往只适配不同形态特征的指标数据。因此很难根据企业业务特点来进行算法选择,即不能说基础监控指标的内存数据就一定适合动态基线算法。因此在选择指标数据适合的算法时,一般需要先对指标数据进行特征分析,再根据数据特征选择合适的算法。
END
版权声明: 本文为 InfoQ 作者【云智慧技术社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/df6b98bfaaa1a9ee6c95552db】。文章转载请联系作者。
评论