语言简介

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

自由编排

通过SLS DSL自由编辑函数,对各种逻辑进行复杂组合,可以满足大部分数据加工场景。例如,可以自由编排完成如下场景:

自由编排

动态分发

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

灵活富化

  • 支持从本地资源或外部资源(包括OSS Bucket、RDS MySQL)来获取富化数据。

  • 支持字典、表格的常规映射,支持表格的高级映射。

  • 支持自动刷新加载的外部资源。

全局操作函数

支持近三十种全局操作函数,通过参数来控制步骤操作,且可以接受其他表达式函数的结果作为参数,其中控制函数不仅可以与表达式函数组合,也可以与其他步骤函数进行组合。主要包括以下种类函数:

  • 流程控制函数

    • 支持基于条件判断后的流程分支,包括if-elseifswitchcompose等。

    • 通过调用e_search等简单搜索函数对不同类型的日志进行灵活加工。

  • 事件操作函数

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

  • 字段操作函数

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

  • 字段值提取函数

    • 支持通过正则表达式、GROK、KV、KV分隔符、CSV、TSV、PSV、Syslog等方式提取字段中的多个值或键值对。

    • 支持JSON数据提取并进行富化。

  • 映射富化函数

    • 支持基于字典、表格进行映射或搜索。

    • 支持从规则配置、外部OSS Bucket、RDS MySQL等资源获取富化的维表信息。

    • 支持基于全量、增量修改日志对外部资源进行自动刷新。

  • 增值内容函数

    支持丰富某些日志字段信息,例如通过IP地址可以获取该IP地址的威胁情报信息,并将此信息保存至日志字段中,有助于您分析日志。

表达式函数

提供两百多个内置的表达式函数,以便转换事件或控制全局函数的行为,覆盖主流的数据加工需求,主要包括以下函数:

  • 事件检查函数

    提供类似Lucene语法、完整的正则表达式,字符串、泛字符、数值比较、and/or/not等组合的条件过滤机制。

  • 操作符函数

    提供字段取值、控制、比较、容器判断、多字段操作等。

  • 转换函数

    提供基础类型转换、数字转换、字典、列表转换操作。

  • 算术函数

    提供基础计算、多值计算、数学计算、数学参数等。

  • 字符串函数

    提供多字段操作,包括编码、解码、排序、倒序、替换,常规规整、查找判断、切分、格式、字符集判断等。

  • 日期时间函数

    提供日期时间转换、获取日期时间属性、获取日期时间、获取Unix时间戳、获取日期时间字符串,修改和比较日期时间等。

  • 正则表达式函数

    提供字段提取、匹配、判断、替换、切分等操作。

  • GROK函数

    提供四百多种GROK内置模式,支持GROK模式替换。

  • 特定结构化数据函数

    支持对特定结构的JSON、Protobuf与XML数据进行提取、过滤等。

  • IP解析函数

    提供IP地址解析和转换等函数。

  • 编码解码函数

    支持对SHA1、SHA256、SHA512、MD5、HTML、URL、Base64等格式的文本进行编码解码。