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

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

配置界面简介

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

  • A:样例日志区域
  • B:可视化清洗流程编辑区域
  • C:清洗结果预览区域
图 1. 自定义切分配置页面

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

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

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

示例一:简单的日志清洗流程

样例日志:

2016-11-08 11:00:01|user_abc|123456|下单
2016-11-08 11:00:02|user_abc|123456|支付
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. 在编辑区左侧的工具栏中,单击切分器,将单分隔符切分器拖拽至编辑区。
    说明 切分器积木块必须连接在 开始清洗模块上才能生效。
    图 2. 简单的日志清洗流程

    切分逻辑说明:

    • 以竖线(|)为分隔符,以 _line 作为入参(_line 代表原始日志行本身)。
    • 切分后 0 号位置的字符串按照 yyyy-MM-dd HH:mm:ss 的格式转为 date (内部实际将以 Long 型保存)。
    • 1 号位置的字符串转为以 username 为 Key 的字符串。
    • 2 号位置转为以 userid 为 Key 的 Long。
    • 3 号位置转为以 event 为 Key 的字符串。
  2. 单击日志切分预览,可以看到每行日志的切分结果如下:
    图 3. 单分隔符切分器切分结果
  3. 单击保存下一步,令清洗流程生效。

到此为止,一个简单的日志切分流程就配置完成了。

示例二:复杂的日志清洗流程

样例日志:

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

在此示例中,不同行上的日志由于操作类型不一样,字段的个数、同位置各字段的含义都不同(这在业务系统中非常常见)。这时可以通过 if-then/if-else 逻辑区分不同类型的日志。

图 4. 复杂的日志清洗流程

切分逻辑说明:

  • 首先使用单分隔符切分器切分出 dateevent 字段。
  • 接着使用逻辑模块中的 if-then 模块,针对不同的 event 使用不同的单分隔符切分器切分出不同的字段。
图 5. 第 1 行日志的切分结果
图 6. 第 2 行日志的切分结果

第一行与第二行切分出的键值对组合是不同的。第一行中有 usernameuserid,而第二行中有 price

更多信息