1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

基于Flink的动态基线实战总结

基于Flink的动态基线实战总结

本文是本际云服务器推荐网的小编小本本,为大家介绍基于Flink的动态基线实战总结。在大数据的背景下,随着指标的数量增加、指标波动幅度变大,设置固定阈值的方式显得日渐乏力。为此,本文在公司自动化运维产品平台上,通过研究动态基线告警的算法,将实时指标数据进行处理并生成告警内容。

基于Flink的动态基线实战总结

动态基线算法

目前已有的基线计算算法,主要分为两种,即静态基线算法和动态基线算法,不同指标适用一种或多种算法,用于针对不同的监控目的。动态基线算法根据现场人员的运维的经验以及实际监控场景,目前场景中主要需要知道历史曲线中最大值、最小值、平均值以及符合正态分布的标准差。本文针对具体的场景结合概率法给出了一种动态基线算法。首先为了提高算法的稳定性,即减少数据异常对动态基线的影响,需要对数据先进行一些预处理,主要的目的是去除数据中极不合理的数据,本文采用去除最大最小值的方式来进行预处理。为了预处理的同时,减少对数据过多的干涉,本文除去最大值和最小值的个数为5%,且向下取整,对于小于1个,则按1个计算。假设指标为X,指标值每分钟统计一次即每分钟指标值为value,动态基线配置的统计时长为q分钟,一天的区间数量为m,去除最大值和最小值的个数y的公式为区间内数据经过预处理之后有效样本数为n,则指标X的动态基线的最大值max计算公式为:指标X的动态基线的最小值min计算公式为:指标X的动态基线的平均值μ计算公式为:指标X的动态基线的标准差σ计算公式为:

动态基线的优化

在真实的应用场景中,往往数据不能按理想的状态分布,真实数据中经常会存在一些异常值,比如某一个时间点网络波动导致一个时间点的指标值抖动特别明显,同时也存在数据不是一直连续存在断点的情况,有的是场景本身如此,就像某个业务可能某一段时间一直有人办理,而另一个时间段这个业务很少有人办理或者没有人办理,数据的不连续性以及数据的异常值都让动态基线的准确性有所降低。本文采用了插值法对数据进行填充以及降噪处理,来提高数据的完整性,使基线曲线更加平滑。

基于Flink的动态基线实现

为了将指标的动态基线更小粒度化,需要将指标的Key按实际的场景进行设计,并且各个Key之间的基线计算互不影响。而Flink本身提供的KeyedStream,通过KeySelector函数来将数据流进行分流,每个Key对应一条属于自己的流,并且各个流互不影响,恰好与动态基线的这一设计思路一致。

基于Flink的动态基线生成的具体步骤为:

  • step1:设置Flink的source函数,即消费已有的历史数据;
  • step2:根据数据的时间字段,定时更新Flink的Watermarkers,本文使用每来一条数据就进行水位更新的方式;
  • step3:定义KeySelector函数,对数据流按指标Key进行分流,保证各个Key之间相互独立;
  • step4:每条KeyedStream设置一个基于业务时间(EventTime)的窗口,窗口大小可根据实际情况进行定义,本文按2小时进行划分,即每两小时汇总一次窗口;
  • step5:窗口汇总时表示该时间区间的数据都已经到齐,此时触发aggregate的汇总函数,函数的功能为本文给出的动态基线算法;
  • step6:统计出基线数据,保存。

基于Flink的动态基线生成示例图如图1。

<img src="" alt="图1基

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5983.html