日志服务语言SLS DSL(Domain Specific Language)是日志服务数据加工使用的与Python兼容的脚本。SLS DSL基于Python语言开发,提供两百多个内置函数来简化数据加工任务。
自由编排
通过SLS DSL自由编辑函数,对各种逻辑进行复杂组合,可以满足大部分数据加工场景。例如,可以自由编排完成如下场景:
动态分发
支持根据业务需求,将数据按照特定逻辑分发到不同的目标Logstore,目标Logstore的名称支持动态计算或者从外部第三方(例如OSS Bucket)获取。
灵活富化
支持从本地资源或外部资源(包括OSS Bucket、RDS MySQL)来获取富化数据。
支持字典、表格的常规映射,支持表格的高级映射。
支持自动刷新加载的外部资源。
全局操作函数
支持近三十种全局操作函数,通过参数来控制步骤操作,且可以接受其他表达式函数的结果作为参数,其中控制函数不仅可以与表达式函数组合,也可以与其他步骤函数进行组合。主要包括以下种类函数:
支持基于条件判断后的流程分支,包括
if-else
、if
、switch
、compose
等。通过调用
e_search
等简单搜索函数对不同类型的日志进行灵活加工。
支持对事件进行丢弃、保留、分裂、输出、复制等。
支持保留、删除、重命名字段等。
支持通过正则表达式、GROK、KV、KV分隔符、CSV、TSV、PSV、Syslog等方式提取字段中的多个值或键值对。
支持JSON数据提取并进行富化。
支持基于字典、表格进行映射或搜索。
支持从规则配置、外部OSS Bucket、RDS MySQL等资源获取富化的维表信息。
支持基于全量、增量修改日志对外部资源进行自动刷新。
支持丰富某些日志字段信息,例如通过IP地址可以获取该IP地址的威胁情报信息,并将此信息保存至日志字段中,有助于您分析日志。
表达式函数
提供两百多个内置的表达式函数,以便转换事件或控制全局函数的行为,覆盖主流的数据加工需求,主要包括以下函数:
提供类似Lucene语法、完整的正则表达式,字符串、泛字符、数值比较、and/or/not等组合的条件过滤机制。
提供字段取值、控制、比较、容器判断、多字段操作等。
提供基础类型转换、数字转换、字典、列表转换操作。
提供基础计算、多值计算、数学计算、数学参数等。
提供多字段操作,包括编码、解码、排序、倒序、替换,常规规整、查找判断、切分、格式、字符集判断等。
提供日期时间转换、获取日期时间属性、获取日期时间、获取Unix时间戳、获取日期时间字符串,修改和比较日期时间等。
提供字段提取、匹配、判断、替换、切分等操作。
提供四百多种GROK内置模式,支持GROK模式替换。
支持对特定结构的JSON、Protobuf与XML数据进行提取、过滤等。
提供IP地址解析和转换等函数。
支持对SHA1、SHA256、SHA512、MD5、HTML、URL、Base64等格式的文本进行编码解码。