日志服務語言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等格式的文本進行編碼解碼。