提取資料中的精髓--秒雲日誌資料解析
- 什麼是資料解析
資料解析,也稱為資料泛化,目的是提取出資料中關鍵的,有意義的資訊,將非結構化或半結構化的資料轉換為結構化的資料。通俗來講,日誌資料解析的目的是取資料之精華,去資料之糟粕。
舉個例子,下面是linux的登入日誌:
May 22 17:13:01 10-9-83-151 sshd[17422]: Accepted password for secisland from 129.74.226.122 port 64485 ssh2
從這個日誌中就可以看到很多的資訊,比如:
- 登入時間:May 22 17:13:01;
- 主機名:10-9-83-151;
- 程序名:sshd;
- 程序ID:17422;
- 登入使用者:secisland;
- 源ip:129.74.226.122;
- 埠:64485;
- 協議:ssh2。
通過上面分析後,把每個欄位儲存到資料庫中,這樣日誌的資訊就很豐富了,為後續的統計分析、關聯分析、告警、機器學習等打下了堅實的基礎。那麼如何把日誌解析能力提供出來,就顯得尤為重要,目前解析的方式主要有幾種:
- 通過編碼實現。直接在程式碼中處理,編譯釋出,這種方式對使用者來說最麻煩,因為幾乎沒有辦法進行調整;
- 通過配置檔案或者指令碼實現。這種方式解決了使用者不能直接調整的問題,相對方便。但寫指令碼、寫配置檔案還是複雜,而且這種情況只能登入後臺檢視,如果檔案比較多,調整修改會相當繁瑣;下面是擷取的開源工具logstash配置檔案,複雜程度不言而喻:
- 通過介面配置的方式實現。在平臺頁面上直接進行配置,這種方式即靈活又簡單,對使用者來說是首選方案。
秒雲日誌分析系統即採用介面配置方式實現資料解析。前端提供web頁面,使用者通過滑鼠點選,輕鬆實現資料識別,欄位提取,欄位轉換等需求,後端內建高速解析引擎,實現資料0延時處理。
下面讓我們從前端、後端兩個視角來看一看秒雲日誌資料解析功能。
- 簡單靈活的前端配置頁面
秒雲資料解析只需簡單的5步即可完成:選擇樣本->選擇特徵->提取欄位->欄位轉換->儲存。
- 選擇樣本
可以通過複製貼上或者搜尋IP、搜尋關鍵字過濾來選擇要泛化的日誌資料樣本。
- 選擇特徵
特徵是用於識別一類日誌的關鍵字,匹配特徵的日誌將使用當前配置的泛化規則。我們提供滑鼠劃詞的方式選擇日誌特徵。這裡我們選擇sshd作為該條日誌的特徵。
- 提取欄位
同樣,通過滑鼠劃詞點選實現關鍵欄位的提取。以提取登入使用者名稱為例:
- 登入時間:May 22 17:13:01;
- 主機名:10-9-83-151;
- 程序名:sshd;
- 程序ID:17422;
- 事件型別:登入(這個是根據內容分析出來的);
- 登入使用者:secisland;
- 源ip:129.74.226.122;
- 埠:64485;
- 協議:ssh2。
從樣本日誌中劃詞選擇“secisland”,給欄位命名“登入使用者”
同樣的方式,從樣本日誌中選取“登入時間”、“主機名”、”程序ID”等欄位
完成後,點選下一步,此時選擇的欄位已經被提取出來,轉換為如下的結構化資料。
- 欄位轉換
如果提取出的欄位還不能滿足最終的需求,可對提取的欄位進行加工,這裡的欄位加工我們稱之為欄位轉換。欄位轉換支援:提取KV對、字串分割、欄位重新命名、清除首尾字元等。
- 儲存
最後點選儲存,泛化規則配置完成。
- 高效併發的後端解析引擎
秒雲日誌自研解析引擎,設計之初充分考慮效能問題,採用流式處理、批量解析並使用go語言編寫。經過測試,單臺裝置解析引擎處理能力超過100KEPS(而相同環境下logstash的效能不到7KEPS,效能相差近20倍。)。不僅如此,解析引擎支援橫向擴充套件,啟動多例項引擎即可線性提升資料處理能力。高效能、多程序併發,能夠輕鬆應對海量資料實時處理的場景。
- 總結
秒雲日誌分析系統提供引導式的介面配置方式,幫助使用者從繁雜的資料中提取出有用的資訊,提取的過程即靈活又簡單。後端資料處理層面,有了資料解析引擎加持,即使面對海量、高速資料流,亦可滿足實時性的苛刻要求,做到0延時處理。簡單、靈活、高效---這就是秒雲日誌資料解析。