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

关键组件和流程

更新时间:2017-09-11 11:03:51   分享:   

本文介绍 ARMS 中使用到的关键组件和流程。

ARMS 中的关键组件介绍

在 ARMS 中,最重要的任务流程和术语由下图所表示:

task-workflow

其中:

  • 数据源: ARMS 获取数据的来源,包括 ECS、LogHub、Logstash、MQ 等。
  • 监控任务: 一个任务代表 ARMS 从数据抓取、数据处理、数据存储到结果展示和导出的一个实例。
  • 数据集:代表一个监控业务的数据结果,其结果可以被 Open API 导出。数据集直接被报表控件和报警规则依赖。
  • 交互式大盘:基于数据集自定义的一组交互式报表。
  • 报警规则:定义了如何从既有数据集中产生报警。

ARMS 中的关键流程介绍

在 ARMS 中,最关键的流程是定义监控任务。通过定一个监控任务,可以利用数据源产生一些列的监控结果,包括生成数据集,报表空间和报警规则。

下图说明了创建一个任务所需要的大致流程和组件,以及组件在 ARMS 技术架构中的依赖方式。

task_arch_work_flow

下文对任务组件作简要说明。

  • 采集规则(必选): 定义数据如何从不同的数据源实例进行采集。
  • 清洗逻辑(必选): 定义如何解析采集到的数据。
  • 数据集配置(必选): 通过配置数据集来定义任务如何基于采集到的数据做聚合计算,持久化存储,以及 Open API 访问输出。
  • 报警通知(可选): 基于数据集,通过定义报警含义和通知方式,提供报警能力。
  • 交互大盘(可选): 通过集成报表空间和报警通知数据,提供可视化大盘能力。

监控任务

在 ARMS 中,监控任务主要分为两大类。

  • 预定义任务:如”异常堆栈监控”,”商品销售量统计”,等。通过创建这类任务,用户通过直接使用预定义的清洗逻辑、数据集、报表控件的组件,可快速组装出一个针对特定场景的监控任务。

  • 定制任务:在这里任务中,用户需要根据提示步骤,一步步手动定制任务的各类组件,组装出一个完整监控任务。

用户创建了监控任务后可在相应的任务管理界面进行管理。除了查看、删除以外,还可以针对监控任务进行起停操作。任务只有被启动的时候ARMS才会进行数据采集、计算和存储数据。当任务被停止的时候,以上工作也会被停止。

采集规则

采集规则定义了数据如何从数据源实例中进行采集。用户只能基于已定义的数据源进行采集规则建立。其中:

  • ECS 数据源:用户需要采集数据的 ECS 服务器或者服务器分组,以及对应的采集数据的日志路径等。
  • Loghub 数据源:直接选取对应的project / logstore id即可。
  • Logstash 数据源:通过 Logstash SDK 写入数据。
  • MQ 数据源:对接 MQ,获取 MQ 消息内容进行统计分析。

数据清洗

每个监控任务对应一个清洗逻辑。清洗逻辑定义如何解析采集到的数据。对于文本类数据,ARMS 支持多种数据清洗方式。例如:

  • 通过特定分隔符如”|”,”=”对数据进行清洗,从而清洗出不同的 Key-Value (KV)。一个极简的例子包括:”itemID=abc|amount=100”的数据日志会被清洗成 itemID 为 String “abc”, amount 为 int 100, 一共两组Key-Value。
  • 亦支持基于 Jason 格式的数据,通过解析 Hash 数据结构清洗出不同的KV。
  • 亦或支持用户自定义的清洗逻辑,如基于不同清洗符的清洗嵌套,等。

数据集配置

数据集是 ARMS 中实时监控数据计算和持久化的重要概念。一个监控任务可对于一个或多个数据集。

数据集的创建

在定义了清洗逻辑以后,通过以下方法定义数据集:

  • 直接创建:创建一个数据集,并定义其维度(Open API 查询 Key),统计值(Value)。
  • 间接创建:通过创建一个报表控件并定义控件要展示的值和维度,或通过创建一个报警通知并定义要监控的值和维度,来间接创建一个数据集。

数据集与实时计算逻辑和数据导出格式

无论使用直接创建还是间接创建,当创建了一个数据集以后,定义的维度(Key)和统计值(Value)将直接决定数据在 ARMS 中如何进行实时计算,以及其 Open API 的查询参数组合和返回值方式。一个极简单的例子,例如某电商想统计各类商品的各个时刻的实时销售额,用于实时展示和事后统计。其设计的统计的维度和统计值为:

  • 其查询维度为时间 (TimeStamp) 和商品类目 ID(String)。
  • 统计值为销售额 (Sum(Int))。

那么:

  • 首先,在实时计算中,ARMS 在后面的实时计算引擎中会针对大量的输入数据作基于时间和商品类目 ID 作类似于 Reduce 的计算,在计算中对销售额做Sum操作。
  • 计算后的结果,根据聚合粒度实时在存储层中持久化。其对应的查询 Open API 中的必选查询 Key 为时间和销售类目 ID,返回的 Int 值表示制定时刻和商品类目的销售总额。

数据集的聚合粒度和保存周期

用户在进行数据集配置时,可定义其聚合的粒度,例如1分钟聚合一次还是 1 小时聚合一次,以及响应的数据的保存周期。一个数据集的聚合粒度和保存周期设置将直接影响其在 ARMS 的持久化存储层的存储容量。例如对于大多数场景,您可能想定义以下聚合和保存的方式组合。这样既可以保证最近时刻的数据精确性,又可以满足长期的统计工作需求,而且还最大限度利用了空间。

  • 1分钟的数据聚合频率,保存7天。
  • 1小时的数据聚合频率,保存30天。
  • 1天的数据聚合频率,保存3年。

在您配置了数据集以后,可以通过数据集管理界面对数据集进行管理,包括启动/停止操作。

  • 数据集启动操作将保证在对应任务启动时,对应的计算将被执行且结果持久化到存储层。
  • 数据集停止操作将使数据集即便其对应的任务在启动时,对应的计算不会被执行。数据集停止期间未被处理的数据流亦无法被回溯执行。

报表控件

用户可以直接创建一个报表控件,或者基于一个现有的数据集创建一个报表控件。

目前 ARMS 支持的报表空间种类如下:

widget-type

报警规则

用户可以直接创建一个报警规则,或者基于一个现有的数据集创建一个报警规则。

报警规则是对一个现有数据集的处理定义,包括:

  • 需要判断的指标阈值;
  • 超过阈值后的处理规则等。
本文导读目录
本文导读目录
以上内容是否对您有帮助?