基于统计的预警:同环比预警实现深度剖析

一、UAV预警功能简介

UAV.Monitor提供了对全维监控指标的预警功能,各类型的监控指标均可配置预警策略,当预警策略被触发后,可通过邮件、HTTP调用等方式进行通知报警,并会根据预警时间频率等对报警动作进行压制。

预警分为流式预警、统计预警以及混合预警三种。

  • 流式预警会对采集到的每一个监控指标数据进行预警判断,达到实时预警的目的;
  • 统计预警是对指标在固定时间段统计值的预警,通常都是定时进行预警判定;
  • 混合预警则是将流式预警与统计预警结合进行预警。

同环比预警就属于统计预警的一种。

二、什么是同环比预警

首先介绍一下同环比的概念,同环比描述的是统计数据的增/降幅度,即某一时间段(本期)的统计结果与之前另一相同长度时间段(基期)的比较结果。同比表示的是本期与上一个同期的比较,比如今年4月与去年4月比较,今天8点到9点与昨天8点到9点比较;环比表示的是本期与上期的比较,如今年4月与今年3月比较,今天8点到9点与7点到8点比较。而同环比预警则是对一段时间内监控指标的统计结果同比上一同期(或环比上期)的增/降幅进行预警,即指标的同/环比计算结果超过了策略指定的增/降幅度则进行报警。

三、同环比预警的实现

3.1 预警策略

预警条件与动作由预警策略定义,预警策略的结构如下:

strategy

{

"type":"",

"instances":[],

"conditions":[],

"relations":[],

"actions":[]

}

condition

{

"expressions":[]

}

一个预警策略(strategy)包含多个预警条件(condition),condition是最小的预警判定元,每个condition可包含多个表达式(Expression);预警表达式定义了单一预警条件,表达式又分为统计(stat)表达式和流式(stream)表达式两种,分别对应统计预警条件与流式预警条件;relations中各relation对应各condition中策略表达式Expression的逻辑判断关系。instances表示该预警影响的实例,actions表示预警触发后的报警动作,type表示预警策略的类型,type根据包含的表达式种类分为含统计表达式的统计(stat)策略和只含流式表达式的流式(stream)策略。

3.2 同环比预警表达式定义

同环比的计算公示为:同/环比值=本期数-基期数,同/环比率=(本期数-基期数)÷基期数×100%。根据计算公式,我们需要的输入条件是:

1)需预警的指标名。

监控的各项数值型指标均可作为预警的指标,如cpu、访问量等。

2)本期时间段与基期时间段。

由于预警是一个比较实时性的动作,所以我们把时间段限制在了24小时内,对于大于24小时比如一周或一个月的统计值或同环比,以周报或月报的形式直接统计效果更好。基期时间则根据同比周期或环比间隔计算得出。

3)指标在时间段内统计值的计算方式。

同环比比较的是指标在一段时间内的统计值,统计方式有求和、求平均等。由于UAV的监控历史值都存储在opentsdb,可通过opentsdb自带的聚合操作进行统计值的计算。

4)预警阈值

增/降幅上限,可设置为数值型阈值或百分比阈值。

同环比预警属于统计预警,所以同环比预警表达式也是统计(stat)类型的表达式。综上,同环比预警表达式结构如下。

expression

{      

"type":"stat",

"arg":""            //预警指标

"time_from":""  //初始时间段-from

"time_to":""      //初始时间段-to

"interval":""      //环比间隔(同比则此项为空)

"unit":""           //同比周期(环比则此项为空)

"aggr":""          //统计方式

"upperLimit":"" //比值上限

"lowerLimit":"" //比值下限

}

3.3 预警策略判定原理

预警模块通过流式条件或定时任务触发对预警表达式的判定,过程如下

当预警策略判定被触发时,各condition独立进行判定,遍历其中的各个Expression进行判定,然后将Expression判定结果按relation定义的逻辑关系进行组合判断,若结果为true则将结果汇总到策略判定结果,然后整合策略判定结果进行报警。

3.4 同环比预警判定原理

同环比预警属于统计预警的一种,所以同环比的预警流程就是统计预警的预警流程,预警模块启动一个用于统计策略判定的Timer,每分钟(因为统计表达式的时间都是以分钟为单位,所以每分钟轮询一次即可)轮询一次策略,并触发统计策略的判定。

当策略被触发后,便会遍历各condition下的表达式,进行一一判定,定时任务触发表达式判定的规则如下。

当最小判定元condition内只有统计表达式时,遍历判定各统计表达式,首先会判定是否是统计表达示的判定时间,同环比表达式根据属性值timefrom,timeto和环比间隔或同比周期来确定。若不是判定时间,考虑到多个统计表达式的组合判定情况时,各表达式的判定时间可能不一致,我们会取出缓存中上次的未过期的判定结果返回。若是判定时间,则进行同环比计算判定,构造opentsdb查询语句调用API查询本期值与基期值,计算得出同/环比值(率),并与阈值进行比较得出判定结果,结果会缓存到redis,这里也会将此condition的判定置为有效,因为如果condition里的表达式都未达到判定时间,这次判定其实是无效的。

若condition内既有统计表达式又有流式表达式(即为混合预警)时,统计表达式会进行正常的判定运算操作,但对于定时任务触发的流式表达式则直接返回false,因此condition判定结果也为false。

混合预警的最终判定是在流式条件触发预警策略时产生,condition中的流式表达式的判定会正常进行,统计表达式的判定过程如下

如果流式条件的触发时间在表达式的判定时间(误差一分钟)内,会直接从缓存获取由定时任务触发策略时计算得出的未过期的判断结果返回,返回结果便可与流式表达式的结果一同得出混合预警的结果。

判定结果返回后,会根据预警表达式信息及判定结果生成报警信息。如图

以上便是同环比预警的完整实现过程。

四、同环比预警的应用

实时预警关注的是系统的瞬时状态,同环比预警则反映了指标的变化趋势以及与过去同期相比的波动状态。比如系统服务访问量异常检测,由于系统量可能根据时间有一定的规律性,如周一到周五访问量大,周末访问量小。若采用流式预警只能定义一个预警阈值,不能根据不同时间设置不同的预警阈值,这时可以在业务高峰时间对系统访问量指标配置按周同比预警,便可对业务访问量异常做出及时有效的报警。

有时单一的同环比预警也不足够,比如刚才的情况下,如果我们不仅关心访问量的相对波动还需要报警时的平均响应时间大于某一阈值才报警,这时就需要与流式预警进行结合预警。

同环比预警丰富了预警体系,与流式预警相结合更有助于对系统异常与业务异常的及时精确发现。

下载UAVStack的源码(https://github.com/uavorg)

来源:宜信技术学院

原文地址:https://www.cnblogs.com/yixinjishu/p/11731305.html

时间: 2024-07-30 09:23:39

基于统计的预警:同环比预警实现深度剖析的相关文章

PCFG -- 基于统计方法生成语法树

语法树的作用 一棵语法树不仅包括了词性(part of speech), 还包括了短语(如名词短语, 动词短语)和结构化的信息(如主语, 谓语和宾语). 这些信息是进行机器翻译所必须的, 例如机器翻译中就需要使用到结构化信息, 来根据不同的语言规定调整主谓宾的顺序. 上下文无关语法 上下文无关语法(CFG)定义了描述语法树的要素. CFG 是一个四元组, 即(S, sigma, R, N), 其中 S 表示开始符号, sigma 表示词汇表, R 表示语法规则, N 表示非终端词. CFG 的问

基于统计的中文实体识别方法简述

命名实体识别(NER)是自然语言处理的一个基础任务,其目的是识别出语料中的人名.地名.组织机构名等命名实体,一般包括三大类(实体类.时间类和数字类)和七小类(人名.地名.机构名.时间.日期.货币和百分比).NER是信息抽取.机器翻译.知识图谱等多种自然语言处理任务必不可少的组成部分. NER方法大致可分为两类:基于规则的方法和基于统计的方法.基于规则的方法多采用语言学家手工构造规则模板,这类系统大多依赖于知识库和词典,需要人工建立实体识别规则,成本高且可移植性差.基于统计的方法一般需要语料库来进

数学之美-2自然语言处理-从基于规则到基于统计的转变

序:任何一种语言都是信息编码的不同单位,语言的语法规则则是编解码的算法 1 存在的问题:文法覆盖规则太多,要人工写工程巨大,且就算写出涵盖所有自然语言处理现象的规则集合,用计算机解析也非常困难,于是出现了基于统计的NLP. 原文地址:https://www.cnblogs.com/xuechengmeigui/p/12195992.html

基于C++ STL图的邻接表表示及深度、广度搜索实现

基于C++ STL图的邻接表表示及深度.广度搜索实现,对图论的学习有帮助,代码如下: #include <iostream> #include <vector> #include <set> using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b) ) //定义图的定点 typedef struct Vertex { int id; vector<int> connectors; //存

基于BP_Adaboost的强分类器设计——公司财务预警建模

算法流程: 算法步骤如下: 步骤一:数据选择和网络初始化 步骤二:弱分类器预测 步骤三:计算预测序列权重 步骤四:测试数据权重调整 步骤五:强分类函数

预警信息-各工序预警学习开发

1 /* 各工序预警开发学习 */ 2 --查询数据库:KBLIVE 中 用户自定义 数据表 主要看建表时间 3 select * from sysobjects where xtype='U' ORDER BY CRDATE DESC 4 5 --预警: 6 select * from WN_DATA0001 order by ENT_DATE 7 8 --预警:解决方案 9 /*37 条数据*/ 10 select * from WN_DATA0002 11 12 /*方便直观查看具体预警信

基于统计机器翻译的文白对译

本文介绍利用NiuTrans工具进行文白对译的步骤,默认用户已经安装NiuTrans,安装目录为NiuTrans/,以下相对路径基于此目录. 文白对译模型训练步骤分为语料预处理.对齐.翻译模型训练.语言模型训练.参数调整四个阶段. 一.语料预处理 我们拿到的原始数据格式比较杂乱,需要做预处理,最终形成规则的平行语料数据. 语 料预处理包括统一标点符号,删除无关符号,删除段前段后,句前句后空格,分词等阶段.最终形成两个平行文件,暂称为src.txt和tgt.txt两个文 件(若是文白翻译src为文

基于统计的自动分词算法

简介:利用字与字间.词与词间的同现频率作为分词的依据,不一定需要建立好的词典.需要大规模的训练文本用来训练模型参数.优缺点:不受应用领域的限制:但训练文本的选择将影响分词结果. 概率最大统计分词算法 一.主要原理 对于任意一个语句,首先按语句中词组的出现顺序列出所有在语料库中出现过的词组:将上述词组集中的每一个词作为一个顶点,加上开始与结束顶点,按构成语句的顺序组织成有向图:再为有向图中每两个直接相连的顶点间的路径赋上权值,如 A→B,则 AB 间的路径权值为 B 的费用(若 B 为结束顶点,则

基于统计的压缩算法:游程编码

1.游程编码概念 游程编码又称"运行长度编码"或"行程编码",是一种统计编码,该编码属于无损压缩编码. 2.基本原理 用一个符号值和串长代替具有相同值的连续符号,使符号长度少于原始数据的长度. 如:   原始文本:dfffffeeeeettttrrrrttttt 游程编码后文本:d1f5e5t4r4t5  3.代码示例 1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5