全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
业务实时监控服务 ARMS

自定义切分的使用

更新时间:2018-01-22 15:44:27

除了智能切分器,ARMS 还提供了自定义清洗配置器,用于自定义日志清洗流程来满足复杂的切分需求。

自定义清洗配置器采用所见即所得的可视化配置方式。本文介绍了如何使用自定义清洗配置器。

配置界面简介

自定义清洗配置界面包含三个部分:

  • 原始日志区域
  • 可视化清洗流程编辑区域
  • 清洗结果预览区域

interface

在可视化流程编辑区域(以下简称“编辑区”),可以使用一个或多个“积木块”组装出日志清洗的逻辑,将原始日志区域中的日志“清洗”为结构化的键值对(Key-Value Pair)。

在编辑区编辑的过程中,可以随时单击清洗结果预览区域上方的日志切分预览按钮,预览每一行原始日志通过当前编辑区的流程清洗后的键值对结果。

预览结果并确认清洗流程准确无误后,单击页面下方的下一步按钮启动任务。ARMS 将使用在编辑区保存的流程来处理每一条从数据源中消费的日志。

示例一

本示例演示如何配置一个简单的日志清洗流程。

假如某系统的交易日志如下:

  1. 2016-11-08 11:00:01|user_abc|123456|下单
  2. 2016-11-08 11:00:02|user_abc|123456|支付
  3. 2016-11-08 11:10:01|user_abc|123456|退货

以第一行数据为例,假设目标切分结果为如下几个键值对:

Key 类型 Key Value
Date date 2016-11-08 11:00:01
String username user_abc
Long userid 123456
String event 下单

通过观察发现,键值对之间均使用竖线(|)进行分隔,因此可以使用单分隔符切分器来切分键值对。

  1. 在编辑区左侧的工具栏中,将单分隔符切分器拖拽至编辑区,如下图所示。

    注意:切分器必须连接在开始清洗模块下才能生效。

    s1

    配置切分说明:

    • 以“|”为分隔符,“_line”作为入参(_line 代表原始日志行本身)。
    • 切分后,0 号位置的字符串按照 yyyy-MM-dd HH:mm:ss 的格式转为 date(内部实际将以 Long 型保存)。
    • 1 号位置的字符串转为 key 为 username 的 String。
    • 2 号位置转为 key 为 userid 的 Long。
    • 3 号位置保存为 key 为 event 的 String。
  2. 点击日志切分预览,可以观察到每行日志的切分结果如下:

    s2

    最终生成的切分模型如下所示:

    444

  3. 单击保存下一步,清洗流程生效。

到此为止,一个简单日志切分就完成了。

示例二

本示例演示如何对复杂的日志进行切分清洗。

  1. 2016-11-08 11:00:01|下单|user_abc|123456
  2. 2016-11-08 11:00:02|支付|200
  3. 2016-11-08 11:10:01|退货

在此样例中,不同的日志由于操作类型不一样,字段的个数、同位置各字段的含义也不同,这在业务系统中十分常见。此时可以通过 if-then/if-else(其语法参考 aviator) 逻辑来区分不同类型的日志。

s10

配置切分说明:

  • 首先使用单分隔符切分器切分出dateevent字段。
  • 接着使用逻辑模块中的 if-then 模块,在 event 为不同值时,分别使用不同的单分隔符切分器配置切分出不同的字段。

    从右侧的预览结果中也可以看到,第一行与第二行切分出的键值对组合是不一样的。第一行中有 username 与 userid,而第二行中有 price。

注意:在自定义切分最下方的最终切分模型预览,将包含上图中右侧单行切分预览区域中所有字段的并集

s11

以上两个例子仅使用了一种切分器(单分隔符切分器)。ARMS 还内置了单分隔符、多分隔符、顺序、K-V、JSON 等多种切分器,针对不同的场景可以单独或组合使用,详情请参考内置切分器

关于自定义切分的其他问题

本文导读目录