全部产品
业务实时监控服务 ARMS

技术架构

更新时间:2017-09-22 17:35:06   分享:   

技术架构概述

ARMS 的技术架构分为几个模块:

arch_work_flow

在完整的一个监控任务中,数据流依次经过以下技术栈:

  1. 从数据源流入数据通道,作统一管理和缓存作用。
  2. 从数据通道流入实时计算引擎进行实时计算。
  3. 计算结果流入持久化存储平台作统一存储。
  4. 通过数据展示层对数据进行各类导出,包括 Open API 直接读取,报表展示,报警通知等。

下文对每个技术栈进行说明。

数据源

在 ARMS 中,数据源负责为 ARMS 提供数据输入。数据源包括以下几种方式:

  • 云服务器 ECS 数据源: 应用直接将数据在 ECS 上输出到相应的日志文件上,再通过 ECS 上的 ARMS Agent(也就是 SLS Agent)将日志数据传输到 ARMS 计算节点中。通过 ECS 方式获取数据的应用需要在相应的 ECS 上安装和配置 ARMS Agent,并在某些情况下要求应用就相关数据日志进行改造。

  • LogHub 数据源:也叫做 SLS 日志源。ARMS 可以通过重用用户在阿里云上的 SLS-日志服务来直接拉取 SLS 中的数据。

  • SDK 数据源:通过提供 SDK 进行数据收集。可以将 SDK 集成到各类不方便收集日志的终端进行数据收集,典型场景如各类移动终端的数据收集。

  • MQ 数据源: 通过对接 MQ 直接拉取 Topic 内消息并基于其内容进行实时统计,进行业务监控。适用于已用 MQ 处理业务的用户,包括如电商、物联网等领域。

  • DRDS(敬请期待): 通过解析 DRDS 或者 RDS 的 Binlog,将指定的数据传输到 ARMS 计算节点。该种方式可以有效即时获取数据库中增、删、改的数据。

ARMS 在收集数据时,需要在已定义的数据源中通过建立数据采集规则来实现数据采集。以 ECS 方式为例,采集规则包括从哪些数据源中收集,对应的文件路径等。

数据通道

从数据源中流出的数据首先进入数据通道。数据通道在 ARMS 中其实是一个类似于 Kafka 的数据队列。它主要起到以下作用:

  • 保证从数据源中流出的数据能立即被 ARMS 接收到,以为下游的实时计算层充当缓冲层。
  • 当计算节点出现任何异常时,相应时间点数据能统一从日志通道重新发送给计算层,以保证所有数据至少被实时计算层处理过一次。

日志通道在 ARMS 上对于用户是透明不可见的。用户仅能控制数据源和实时计算层的计算逻辑。日志通道的各类管理由 ARMS 自动完成。

实时计算

在数据通道中的数据会被 ARMS 计算层节点实时读取。ARMS 实时计算层的实时计算能力由基于阿里内部开发且开源的实时计算引擎提供,并实现毫秒级的流式计算处理能力。

ARMS 的实时计算层并不要求用户基于实时计算引擎编写流式计算程序,而是通过拖拽方式方便地定义出实时计算任务。在 ARMS 中,用户只需要基于交互界面做以下事情:

  • 定义数据的清洗逻辑:例如一行日志数据是以”|”或是”;”符号进行切分(清洗的一种逻辑),切分后的 Key-Value 设定等。
  • 定义数据集的聚合计算逻辑:例如数据以何种维度进行聚合(Group By),聚合的计算方式(Sum,Max)等。

在监控任务中,用户通过定义清洗和聚合计算逻辑来产出计算结果,最终的结算结果形成一个个特定的数据集,被持久化的存储层。

持久化存储

作为一款致力于提供端到端实时监控解决方案的产品,ARMS 除了提供实时计算能力以外,同时将计算结果持久化以供下游使用的能力。

在 ARMS 中,持久化存储通过列式存储实现,可以满足高吞吐和高扩展的性能要求。在实时计算中产生的数据集以 ARMS 特定优化的数据结构方式存储在列式存储中。存储具体结构对外部透明,并不需要用户干预。用户只需要在实时计算中通过控制产生的数据集和相关属性(索引键,保存周期,等)来控制哪些数据需要进行持久化存储,以及对应的存储空间。

ARMS 持久化到后端列式存储的数据结构对外部透明。用户通过访问数据展示层来间接访问列式存储的数据结果。

数据展示层

ARMS 的监控数据结果一般可通过以下三种方式被用户利用。

  • RestAPI:最直接的方式。通过 RestAPI 基于数据集定义的各类查询 Key 对数据结果进行访问。
  • 报表控件:每个报表控件基于特定的一个或一组数据集。用户通过将报表控件嵌入到自己的展示页面(尽请期待)或者直接在 ARMS 的大盘中进行交互式访问。
  • 报警通知:通过定义报警策略,定期对数据集结果进行抓取和匹配,对符合特征的事件进行包括邮件、短信方式的报警。
本文导读目录
本文导读目录
以上内容是否对您有帮助?