日志服务语言LOG DSL(Domain Specific Language)是日志服务数据加工使用的与Python兼容的脚本。LOG DSL基于Python提供两百多个内置函数来简化数据加工模式。

自由编排

LOG DSL支持自由编辑函数,对各种逻辑进行复杂组合,可以满足大部分数据加工场景。

例如,可以自由编排完成如下场景:
自由编排

全局操作函数

支持近30种全局操作函数,通过参数来控制步骤操作,且可以接受其他表达式函数的结果作为参数,其中控制函数不仅可以与表达式函数组合,也可以与其他步骤函数进行组合。
  • 控制函数
    • 支持基于条件判断后的流程分支,包括if-elseifswitchcompose等。
    • 通过调用e_search等简单搜索函数对不同类型的日志进行灵活加工。
  • 事件操作函数

    支持对事件进行丢弃、保留、分裂、输出、复制等。

  • 字段操作函数

    支持保留、删除、重命名字段等。

  • 字段赋值函数

    支持基于任意表达式组合结果设置字段的值。

  • 字段值提取函数
    • 支持通过正则表达式、GROK、KV、KV分隔符、CSV、TSV、PSV、Syslog等方式提取字段中的多个值或键值对。
    • 支持JSON数据提取并进行富化。
  • 映射富化函数
    • 支持基于字典、表格进行映射或搜索。
    • 支持从规则配置、外部OSS、RDS、Logstore等资源获取富化的维表信息。
    • 支持基于全量,增量修改日志对外部资源进行自动刷新。

表达式函数

提供两百多个内置的表达式函数,以便转换事件或控制全局函数的行为,覆盖主流的数据加工需求,包括:
  • 事件搜索:提供类似Lucene语法、完整的正则表达式,字符串、泛字符、数值比较、and/or/not等组合的条件过滤机制。
  • 基本操作函数:字段取值、控制、比较、容器判断、多字段操作等。
  • 转换函数:基础类型转换、数字转换、字典、列表转换操作。
  • 算术函数:基础计算、多值计算、数学计算、数学参数等。
  • 字符串函数:多字段操作,编码、解码、排序、倒叙、替换,常规规整、查找判断、切分、格式、字符集判断等。
  • 日期时间函数:日期时间转换、获取日期时间属性、获取日期时间、获取Unix时间戳、获取日期时间字符串、修改、比较日期时间等。
  • 正则表达式函数:字段提取、匹配、判断、替换、切分。
  • GROK支持:提供四百多种GROK内置模式,支持GROK模式替换。
  • JSON,Protobuf与XML函数:提取、过滤等。
  • 编解码:支持对SHA1、SHA256、SHA512、MD5、HTML、URL、Base64等格式的文本进行编码解码。

动态分发

支持根据业务需求,将数据按照特定逻辑分发到不同的目标Logstore,目标Logstore的名称支持动态计算或者从外部第三方获取。

灵活富化

  • 支持从本地资源或外部资源(包括OSS、RDS、日志服务Logstore)来获取富化数据。
  • 支持字典、表格的常规映射,搜索表格的高级映射。
  • 外部资源加载支持自动刷新。