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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 业务实时监控服务( 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 自定义监控中,在任务配置的第三个步骤(第一个步骤是配置日志路径,第二个步骤是配置切分),用户需要配置数据集(数据的预计算逻辑),如下图
image

其中指标是数据列的聚合计算、过滤是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提供了 过滤、聚合、降精度和汇总等多种计算方式。如下图所示:
image

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

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

总结

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

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
相关文章
|
存储 NoSQL 关系型数据库
【云原生】3.3 Kubernetes 中间件部署实战
一个项目总会有数据吧?数据存那里呢?在前面我们讲过,很明显直接存在数据卷里面(PVC),例如 MySQL的数据。比如 MySQL有自己的配置文件、Redis 有自己的配置文件、微服务也有自己的配置文件,将它们挂在到配置集里面(ConfigMap),服务采用的是 ClusterlP 与 NodePort。......
2260 118
【云原生】3.3 Kubernetes 中间件部署实战
|
SQL 索引 数据库
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
使用instr 函数优化替换Like条件子句提高数据检索性能
1274 0
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
|
算法 Python
Python高级算法——回溯法(Backtracking)
Python高级算法——回溯法(Backtracking)
891 2
|
5月前
|
人工智能 大数据 BI
DeepSeek-R1模型全栈开发与部署实战培训高级研修班
掌握DeepSeek-R1模型从本地部署到工业级落地的全栈技术能力,包括环境配置、模型微调、推理优化及AI Agent开发等核心环节,能够独立完成基于RTX 4090的模型全生命周期开发任务。通过真实场景案例与全链路项目实战,培养将大模型技术转化为教育、企业服务等垂直领域解决方案的能力,涵盖需求分析、性能调优及工程化部署等关键技能,满足学术研究与产业落地的双重需求。
122 0
|
5月前
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
371 89
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
2175 0
|
11月前
|
机器学习/深度学习 存储 自然语言处理
从理论到实践:如何使用长短期记忆网络(LSTM)改善自然语言处理任务
【10月更文挑战第7天】随着深度学习技术的发展,循环神经网络(RNNs)及其变体,特别是长短期记忆网络(LSTMs),已经成为处理序列数据的强大工具。在自然语言处理(NLP)领域,LSTM因其能够捕捉文本中的长期依赖关系而变得尤为重要。本文将介绍LSTM的基本原理,并通过具体的代码示例来展示如何在实际的NLP任务中应用LSTM。
968 4
|
11月前
|
数据采集 监控 数据挖掘
CDGA|金融科技变革下的数据治理怎么做?
未来,随着技术的不断进步和监管环境的逐步完善,金融科技企业将在数据治理与合规方面取得更大突破,实现稳健发展。数据治理将成为金融科技企业的核心竞争力之一,为金融行业的健康发展保驾护航。
CDGA|金融科技变革下的数据治理怎么做?
|
JavaScript Java 测试技术
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
188 3
基于微信小程序的家政服务预约系统的+php+vue.js附带文章和源代码设计说明文档ppt
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能环境监测与预警
【8月更文挑战第11天】 使用Python实现深度学习模型:智能环境监测与预警
1263 2

热门文章

最新文章