阅读212 返回首页    go iPhone_iPad_Mac_手机_平板_苹果apple


关键组件和流程__产品简介_业务实时监控服务 ARMS-阿里云

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

ARMS 中的关键组件介绍

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

task-workflow

其中:

  • 数据源: ARMS获取数据的地方,目前主要主持ECS上的日志抓取。以后会支持其他如MQ, DRDS,等。
  • 监控任务: 一个任务代表ARMS从数据抓取,数据处理,数据存储到结果展示和导出的一个实例。
  • 数据集:代表一个监控业务的数据结果,其结果可以被OpenAPI导出。数据集直接被报表控件和报警规则依赖。
  • 报表控件:基于数据集的一个用于展示的报表控件。
  • 报警规则:定义了如何从既有数据集中产生报警。

ARMS 中的关键流程介绍

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

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

task_arch_work_flow

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

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

监控任务

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

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

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

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

采集规则

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

  • ECS 数据源:用户需要采集数据的 ECS 服务器或者服务器分组,以及对应的采集数据的日志路径,等。
  • Loghub 数据源:直接选取对应的project / logstore id即可。
  • API 数据源:直接选取对应API数据源 id 即可。
  • 其他数据源:敬请期待。

数据清洗

每个监控任务对应一个清洗逻辑。清洗逻辑定义如何解析采集到的数据。对于文本类数据,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 在后面的 JStorm 引擎中会针对大量的输入数据作基于时间和商品类目 ID 作类似于 Reduce 的计算,在计算中对销售额做Sum操作。
  • 计算后的结果,根据聚合粒度实时在存储层中持久化。其对应的查询 Open API 中的必选查询 Key 为时间和销售类目 ID,返回的 Int 值表示制定时刻和商品类目的销售总额。

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

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

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

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

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

报表控件

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

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

widget-type

报警规则

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

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

  • 需要判断的指标阈值
  • 超过阈值后的处理规则,等。

最后更新:2016-11-23 16:04:16

  上一篇:go 技术架构__产品简介_业务实时监控服务 ARMS-阿里云
  下一篇:go 发布版本__产品简介_业务实时监控服务 ARMS-阿里云