速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 2020-02-06
  • 本文字数:2708 字

    阅读完需:约 9 分钟

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

一、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 预警策略判定原理

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


1571884305168017985.jpeg


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

3.4 同环比预警判定原理

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


1571884312968007796.jpeg


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


1571884320428014389.jpeg


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


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


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


1571884327598090488.jpeg


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


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


1571884335658035393.jpeg


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

四、同环比预警的应用

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


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


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


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


本文转载自宜信技术学院公众号。


原文链接:http://college.creditease.cn/detail/313


2020-02-06 21:331184

评论

发布
暂无评论
发现更多内容

如何在 Go 中将 []byte 转换为 io.Reader?

AlwaysBeta

golang Go 语言

Flink CDC 系列 - Flink MongoDB CDC 在 XTransfer 的生产实践

XTransfer技术

flink 分布式数据库mongodb

检索、问答、情感分析场景前沿技术方案分享!

百度开发者中心

自然语言处理

网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别

JackJiang

TCP 网络编程 udp 即时通讯 IM

中国联通、欧莱雅和钉钉都在争相打造的秘密武器?虚拟IP未来还有怎样的可能

行者AI

人工智能 虚拟

面试官:this和super有什么区别?this能调用到父类吗?

王磊

大数据开发之Spark SQL及基础引擎知识分享

@零度

大数据 spark SQL

【鲲鹏 DevKit黑科技揭秘】│如何实现全链路系统问题90%精准诊断?

华为云开发者联盟

内存 性能分析 内存泄漏 鲲鹏 鲲鹏 DevKit

SLICK: Facebook基于SLO的可靠性保障实践

俞凡

facebook 架构 大厂实践

近百万条数据、3秒查询,TDengine助力北微云平台的搭建

TDengine

数据库 tdengine 物联网

Babel 学习日记(0)

恒生LIGHT云社区

前端 babel

59 K8S之Elasticsearch节点

穿过生命散发芬芳

k8s 28天写作 12月日更

盘点 2021|从零开始,向前出发

Middleware

生涯规划 个人成长 盘点2021 2021年终总结

并发场景加锁优化小技巧

程序员小航

jdk 并发

Hoo虎符研究院 | Mir Protocol 调研报告

区块链前沿News

Hoo虎符 虎符交易所 好项目

【Netty技术专题】「原理分析系列」Netty强大特性之ByteBuf零拷贝技术原理分析

洛神灬殇

Netty 零拷贝 zero copy 12月日更

FFmpeg的一些应用实践-补充

为自己带盐

ffmpeg 28天写作 12月日更

Dubbo的预热与停机实践

快看工程技术中心

dubbo 优雅停机 服务预热

如何把 MySQL 备份验证性能提升 10 倍

Juicedata

MySQL 数据库 云存储 数据备份

在线JSON转MySQL建表语句工具

入门小站

工具

TiDB Hackathon 项目白皮书—LotusDB

roseduan

TiDB KV存储引擎 kv

PingCode 技术架构揭秘

PingCode研发中心

架构 技术架构 研发 PingCode

QCon-小布助手对话系统工程实践

安第斯智能云

SphereEx 亮相 openGauss Summit 2021,同云和恩墨签订战略合作协议

SphereEx

开源 ShardingSphere SphereEx 云和恩墨 战略合作

持续创新·驱动计算:英特尔2021年技术发展大盘点

科技新消息

新官网心体验,腾讯WeTest全新产品功能与解决方案发布!

WeTest

四款常见IT自动化运维工具简单介绍-行云管家

行云管家

运维 IT运维 自动化运维

等保五级怎么划分?适用于哪些系统?

行云管家

网络安全 等级保护 等保测评 信息安全等级保护

RandomAccessFile 解决多线程下载及断点续传

码农架构

微服务架构 断点续传 大文件断点续传 RandomAccessFile 微服务附件

面向 web 开发人员的免费托管服务

开源之巅

Linux云计算之使用rsync+sersync 实现数据实时同步

学神来啦

Linux centos linux运维 rsync linux云计算

基于统计的预警:同环比预警实现深度剖析_语言 & 开发_UAV_InfoQ精选文章