Log Service語言SLS DSL(Domain Specific Language)是Log Service資料加工使用的與Python相容的指令碼。SLS DSL基於Python語言開發,提供兩百多個內建函數來簡化資料加工任務。
自由編排
通過SLS DSL自由編輯函數,對各種邏輯進行複雜組合,可以滿足大部分資料加工情境。例如,可以自由編排完成如下情境:
動態分發
支援根據業務需求,將資料按照特定邏輯分發到不同的目標Logstore,目標Logstore的名稱支援動態計算或者從外部第三方(例如OSS Bucket)擷取。
靈活富化
支援從本地資源或外部資源(包括OSS Bucket、RDS MySQL)來擷取富化資料。
支援字典、表格的常規映射,支援表格的進階映射。
支援自動重新整理載入的外部資源。
全域操作函數
支援近三十種全域操作函數,通過參數來控制步驟操作,且可以接受其他運算式函數的結果作為參數,其中控制函數不僅可以與運算式函數組合,也可以與其他步驟函數進行組合。主要包括以下種類函數:
支援基於條件判斷後的流程分支,包括
if-else
、if
、switch
、compose
等。通過調用
e_search
等簡單搜尋函數對不同類型的日誌進行靈活加工。
支援對事件進行丟棄、保留、分裂、輸出、複製等。
支援保留、刪除、重新命名欄位等。
支援通過Regex、GROK、KV、KV分隔字元、CSV、TSV、PSV、Syslog等方式提取欄位中的多個值或索引值對。
支援JSON資料提取並進行富化。
支援基於字典、表格進行映射或搜尋。
支援從規則配置、外部OSS Bucket、RDS MySQL等資源擷取富化的維表資訊。
支援基於全量、增量修改日誌對外部資源進行自動重新整理。
支援豐富某些日誌欄位資訊,例如通過IP地址可以擷取該IP地址的威脅情報資訊,並將此資訊儲存至日誌欄位中,有助於您分析日誌。
運算式函數
提供兩百多個內建的運算式函數,以便轉換事件或控制全域函數的行為,覆蓋主流的資料加工需求,主要包括以下函數:
提供類似Lucene文法、完整的Regex,字串、泛字元、數值比較、and/or/not等組合的條件過濾機制。
提供欄位取值、控制、比較、容器判斷、多欄位操作等。
提供基礎類型轉換、數字轉換、字典、列錶轉換操作。
提供基礎計算、多值計算、數學計算、數學參數等。
提供多欄位操作,包括編碼、解碼、排序、倒序、替換,常規規整、尋找判斷、切分、格式、字元集判斷等。
提供日期時間轉換、擷取日期時間屬性、擷取日期時間、擷取Unix時間戳記、擷取日期時間字串,修改和比較日期時間等。
提供欄位提取、匹配、判斷、替換、切分等操作。
提供四百多種GROK內建模式,支援GROK模式替換。
支援對特定結構的JSON、Protobuf與XML資料進行提取、過濾等。
提供IP位址解析和轉換等函數。
支援對SHA1、SHA256、SHA512、MD5、HTML、URL、Base64等格式的文本進行編碼解碼。