Splunk 一直在 Log Management Tools 上為最佳的系統,只是在 2018 年以前,要取得這個系統相對困難。但是在 2018 年後有了改變,免費版的 Splunk 更易取得,除了有易於推廣以外,也對於 ELK 的崛起做出了反應。不過在聯發科的一年中,學習了這套系統,真的覺得這套有很多神奇的地方,單單使用類似於 SQL 語法的 spl 進行資料搜尋就優於各種 Log 管理工具了。
Turn Machine Data Into Answers
在 2018 年讀研究所期間,多有涉獵 ELK。而其實在 2017 加入聯發科的時候就已經大量使用 Splunk,因此這兩套系統中我仍然覺得 Splunk 具有絕對優勢。
在資料收集中,Splunk 具有 forwarder,官方支援了 6 種作業系統。在付費版本中還具有部屬功能,非常簡單可以從單一台機器對於多台機器進行部屬,統一設定檔案,也方便管理多台機器,且在效能方面也表現不淑。可以接受檔案讀取,http 的請求等方式將資料收進 Splunk。
在資料儲存中,本身就具有 cold 與 hot 資料儲存區,可以把一定時間後的資料儲存到較為便宜的儲存區塊,這樣的好處是可以節省成本,或是可以依照資料的重要性去決定資料是否需要長時間處於可調查狀態。在 ELK 上因為資料儲存方式不同,ELK 必須依照每一天的去調整資料儲存狀態。不過資料儲存中,Splunk 不具有刪除功能,即便有 delete 指令,也只是把資料上一個不要被查詢的標籤,資料不會被刪除。這部分跟 ELK 非常的不同,主要是因為 Splunk 認為資料不應該被移除,即便是錯誤的資料都有它存在的價值。
在 Splunk 中的搜尋使用 SPL 語法,這種語法已經可以完成 8 成以上的資料查詢與分析,更可以大幅度提高資料視覺話,如何讓 Log 從 raw data 轉號到標轉的 table 資料,成為學 Splunk 最重要的事情,而且 Splunk 已經把分散式的運算做得非常好,所以 SPL 語法在分散式架構上得到更好的資料分析能力,當然有很多的技巧可以幫助運算時間,不過這些東西就是很深入的討論了,一般的使用其實不會碰到 (註一)。而如同 SQL 一樣,SPL 語法同樣非常有自由度,因此可以完成大部分的資料搜尋工作,並且可以完成各種的分析,不過缺點就是需學習各種指令,才能完全掌握這個技術。
Splunk 的優勢在於快速部屬與高度自由度的SPL,單單這兩點我覺得就完全符合他的價格,當然 Splunk 預設的客群也是超級企業,例如:聯發科、台積電、Blizzard、Apple 等等這類型的公司,這類型的公司也完全不會在意那樣的軟體費用的。因此我覺得蠻幸運可以得到接觸這套軟體的機會,看到一套完整且特製化的系統架構。
註一:我在聯發科開發一般專案的時候根本不會注意到,直到我幫忙處理 10000000筆/天 的資料時,就遇到非常嚴重的效能瓶頸,一天的資料量要處理 15 分鐘。後來經過挑整,一天的資料只要 30 秒就可以解決。不過這都很細微的調整了,在這裡就不再多家贅述了。