ARMS: 原来实时计算可以这么简单!

摘要: 业务实时监控服务( ARMS)是一款阿里云应用性能管理(APM)类监控产品。借助本产品,您可以基于前端、应用、业务自定义等服务,迅速便捷地为企业构建秒级响应的业务监控能力。

业务实时监控服务( ARMS)是一款阿里云应用性能管理(APM)类监控产品。借助本产品,您可以基于前端、应用、业务自定义等服务,迅速便捷地为企业构建秒级响应的业务监控能力。
其中自定义监控作为该产品的时序计算和存储的基础,整合和封装了数据收集,消息通道,实时计算,时序存储,以及在线报表等多种先进互联网技术组件。
本文主要介绍一下 ARMS 自定义监控中聚合逻辑以及时序查询设计。

离线计算方式

以一个sql查询为例:
select count(col1), sum(col2) as sum from data_table
where filterCols
group by groupByCols
order by sum desc/asc
limit limitNum

其中第一部分可以抽象为:聚合(sum, count)、过滤(where)和分组(group by)。
第二部分则是在第一部分的计算结果上进行排序(order by)和截断(limit)。

实时计算方式

随着用户数据量的增加,离线的计算会越来越慢,难以满足用户在某些场景下的实时性要求,因此很多解决方案中引入了实时计算。
与离线计算相比,实时计算有两点区别:

  • 需要用户给定时间字段。ARMS支持两种时间,event time(用户切分的时间)和processing time(ARMS切分中的_sysTime)。
  • 数据处理分为了预计算和后计算两个阶段。预计算阶段计算原始数据,并存储预计算的结果,使得数据量大大减少。当用户需要实时查询数据的时候,可以基于预计算的结果,通过后计算方式,得到最终结果。

预计算

select count(col1), sum(col2) as sum from origin_data
where filterCols
group by groupByCols and timeInterval

其中col1、col2、filterCols、groupByCols、time 都是日志切分后的字段,timeInterval是流数据切分所用的时间间隔,如一分钟、五分钟等。

后计算

select count(col1'), sum(clo2') from 预计算结果
where filterCols'
group by groupByCols' and timeInterval'
TimeRange (minTime, maxTime)

其中col1'、clo2'、filterCols'、groupByCols' 中的字段都是来自预计算之后的结果。
timeInterval' 是用户查看每个数据点的时间间隔,TimeRange (minTime, maxTime)是查询数据的时间区间。

ARMS 解决方案

针对上面分析,ARMS 通过两个步骤解决了用户的预计算和后计算的问题。
预计算
在ARMS 自定义监控中,在任务配置的第三个步骤(第一个步骤是配置日志路径,第二个步骤是配置切分),用户需要配置数据集(数据的预计算逻辑),如下图

其中指标是数据列的聚合计算、过滤是filter,维度是group by的条件。在ARMS中,维度分位两种,一种是平铺维度,一种是下钻维度。
平铺维度是指将聚合结果按照所有的维度直接存储,比如按照col1、col2、col3字段进行group by,存储结果就是一个包含所有col1、col2、col3字段的全集。
下钻维度是对平铺维度的一种优化,比如对于机器基础监控数据,在问题发生时,用户往往需要从机房维度先发现问题,然后下钻到该机房的应用分组,最终定位到某台机器IP的问题。这个时候,可以针对平铺维度中的机房、分组、IP建立单向索引,即机房中的分组索引,分组中的IP索引,以加快查询速度。这就是下钻维度的作用,类似还有省、市、区的例子。
以三个维度col1, col2, col3进行group by为例,平铺维度和下钻维度的不同如下:
平铺维度在时序数据库中存储的是如下三个维度的聚合结果:

col1, col2, col3, 聚合指标

聚合指标里面包含sum、count、max等聚合的结果
下钻维度在时序数据库中存储的是逐级展开的三个维度的聚合结果,相当于一个以空间换时间的解决方案。

col1,聚合指标
col1, col2,聚合指标
col1, col2, col3,聚合指标

后计算

在ARMS中,预计算的数据存储在时序数据库中,后计算则是基于时序存储的查询时计算。
与OpenTSDB类似,ARMS提供了 过滤、聚合、降精度和汇总等多种计算方式。如下图所示:

  • 在维度中选择为“全部”表示会根据该维度再次group by,选择“固定值”表示会在该维度进行过滤。
  • 在指标中,支持选择单个指标或者指标的组合计算。
  • TopN则对应到order by desc 和 limit。
  • 时间粒度可以用户选择,也可以由系统根据用户选择的时间区间确定。目前提供的有一分钟、五分钟、十五分钟、一小时、一天等。

相对OpenTSDB,ARMS还提供了数据集与数据集的 JOIN 操作、占比操作,如果两个数据集包含同样的维度,则数据集可以JOIN,然后基于JOIN后的数据做指标复合计算。

总结

ARMS 自定义监控将用户实际使用中的日志采集、切分、实时聚合、存储,以及在线报表整合为统一的解决方案,方便了用户的使用,欢迎大家尝试。

原文链接

原文地址:http://blog.51cto.com/13679539/2130658

时间: 2024-07-31 06:57:33

ARMS: 原来实时计算可以这么简单!的相关文章

实时计算,流数据处理系统简介与简单分析

转自:http://www.csdn.net/article/2014-06-12/2820196-Storm 摘要:实时计算一般都是针对海量数据进行的,一般要求为秒级.实时计算主要分为两块:数据的实时入库.数据的实时计算.今天这篇文章详细介绍了实时计算,流数据处理系统简介与简单分析. 编者按:互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级.实时计算的今天,业界都没有一个准确的定义,什么

实时计算平台

实时计算平台中的弹性集群资源管理 本文系微博运维数据平台(DIP)在实时计算平台的研发过程中集群资源管理方面的一些经验总结和运用,主要关注以下几个问题: 异构资源如何整合? 实时计算应用之间的物理资源如何隔离? 集群资源利用率如何提高? 集群运维成本如何降低? 1. 背景 这是我们初期的一个实时计算架构,大致划分为三个部分: (1)日志收集: 使用Rsynlog.Flume.Scribe汇聚各个业务方发送过来的日志数据:如果条件允许,业务方也可以直接将数据写入Kafka. (2)日志传输: 使用

Spark Streaming实时计算框架介绍

http://www.cnblogs.com/Leo_wl/p/3530464.html 随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐.用户行为分析等. Spark Streaming是建立在Spark上的实时计算框架,通过它提供的丰富的API.基于内存的高速执行引擎,用户可以结合流式.批处理和交互试查询应用.本文将详细介绍Spark Streaming实时计算框架的原理与特点.适用场景. Spar

你了解实时计算吗?

转自:http://www.cnblogs.com/foreach-break/p/what-is-real-time-computing-and-how.html?utm_source=tuicool&utm_medium=referral 本文目录 [-点此收起] 实时计算是什么? 最热的微博话题是什么? 如何定义时间? 滑动窗口 Topology 将聚合计算与时间结合起来 结语 实时计算是什么? 请看下面的图: 我们以热卖产品的统计为例,看下传统的计算手段: 将用户行为.log等信息清洗后

实时计算平台中的弹性集群资源管理

本文系微博运维数据平台(DIP)在实时计算平台的研发过程中集群资源管理方面的一些经验总结和运用,主要关注以下几个问题: 异构资源如何整合? 实时计算应用之间的物理资源如何隔离? 集群资源利用率如何提高? 集群运维成本如何降低? 1. 背景 这是我们初期的一个实时计算架构,大致划分为三个部分: (1)日志收集: 使用Rsynlog.Flume.Scribe汇聚各个业务方发送过来的日志数据:如果条件允许,业务方也可以直接将数据写入Kafka. (2)日志传输: 使用Kafka作为日志收集组件与实时应

实时计算storm流程架构总结

hadoop一般用在离线的分析计算中,而storm区别于hadoop,用在实时的流式计算中,被广泛用来进行实时日志处理.实时统计.实时风控等场景,当然也可以用在对数据进行实时初步的加工,存储到分布式数据库中如HBase,便于后续的查询. 面对的大批量的数据的实时计算,storm实现了一个可扩展的.低延迟.可靠性和容错的分布式计算平台. 1.对象介绍 tuple:表示流中一个基本的处理单元,可以包括多个field,每个filed表示一个属性 topology:一个拓扑是一个个计算节点组成的图,每个

实时计算框架之二:Storm之入门实例

预备.开火.瞄准-- 1 总结与提升 自1月份来,可谓是浮浮荡荡,一波三折呀. 先是参加了公司组织的创意马拉松大赛,虽说24小时内完成了作品,但是自己感觉上效果很差,自然成绩也是不高.通过这24小时持续的奋斗以及后来的各种产品描述等环节,发现了开发上的许多缺点.首先,对我们的产品进行了深入的认识和了解,也在产品之上,发现了更多可以发展走向成功的点子,这是我觉得最棒的一点:其次,短时间内和队员进行协作交流,生成产品,这之间的沟通非常重要:第三,选择C++作为24小时创作的语言,开发效率相对而言是非

Storm实时计算:流操作入门编程实践

转自:http://shiyanjun.cn/archives/977.html Storm实时计算:流操作入门编程实践 Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比较简单,实际编程开发起来相对容易.下面,简单介绍编程实践过程中需要理解的Storm中的几个概念: Topology Storm中Topology的概念类似于Hadoop中的MapReduce Job,是一个用来编排.容纳一组计算逻辑组件(Spout.Bolt)的对象(Hadoop MapReduce中一

细细品味架构(第1期)_实时计算在点评

Hi,博友: 欢迎查阅<细细品味架构>系列,本系列将和我一起学习,并慢慢走近架构师的神秘世界. 本期目录: 1.本期内容... 3 1.1 版权申明... 3 1.2 内容详情... 3 1.2.1 实时计算在点评的使用场景... 3 1.2.2 实时计算在业界的使用场景... 4 1.2.3 点评如何构建实时计算平台... 5 1.2.4 Storm基础知识简单介绍... 6 1.2.5 如何保证业务运行可靠性... 8 1.2.5 Storm日常使用经验分享... 10 1.2.6 关于计