在Log記錄應用的領域中,除了報表軟體、SEM/SIEM之外,市面上還有另一套以搜尋技術為基礎所發展出來的產品,獨樹一格,那就是Splunk。

簡而言之,企業可以用它收集各種類型系統或設備所產生的資料、建立索引,並且讓使用者能夠即時搜尋、分析統計這些資料的內容。

有別於傳統作法,直接針對資料源建立索引、提供搜尋

而Splunk之所以受到矚目,主要是因為它可以做到即時與歷史資料的搜尋與統計分析,而且資料整合運用範圍幾乎無所不包——除了能夠針對伺服器、網路設備等個別IT系統類型下的事件記錄,還能同時橫跨到各種格式的資料,而不只是系統、應用程式與網路設備的日誌記錄,例如與業務、應用程式相關的資料(Business Application Data),還有各種使用者本身產生的資料(Human Generated Data),以及不同設備自動化過程中所產生的資料(Machine Generated Data)。

Splunk實際使用的方式,也和一般日誌管理產品有顯著不同。特點如下:

具有高度延展性的平行運作架構

架構上,Splunk允許本身的某些元件獨立出來執行,支援大量分散式建置,以達到橫向擴充的效果。

為了能夠擷取、分析大量資料集(dataset),它也加入MapReduce的方法(Google搜尋的相關應用,以及目前巨量資料應用的關鍵技術平臺Hadoop也採用MapReduce),將所取得的資料能夠分而治之(divide and conquer),從第4版以後,Splunk也透過著重平行處理的MapReduce模式採用,改善了搜尋語言的執行。

提供免費版,任何人都能安裝、使用

Splunk本身為軟體,使用授權分為免費版和企業版等兩種模式。在免費版授權下,系統每天編製的索引資料量最大為500MB,少了一些進階功能,如登入與存取管制、定期監視與警示、分散式部署,但免費版內含的基本功能算是一應俱全,像是資料的接收、傳送、搜尋、索引建立、報表產生等,這有利於吸引預算有限、資料量不大的環境來導入使用,例如個人、公司特定部門或小型企業。

所存取的資料不需正規化處理

Splunk可以收集與保存任何設備的事件,號稱沒有資料格式的限制,用戶不需購買或客製專用的資料源連接器(connector)才能取得所欲監控的設備端資料,而是能夠直接連至設備擷取,或透過額外的代理程式來收集。

同時,它也不需透過專門的語法分析技術(parser)支援、事先定義固定的資料綱要(schema),將各種結構化或非結構化的資料內容正規化(normalize)對應後再儲存起來,供系統分析,而是收集起來之後,再建立索引。

搭配使用者社群互助的機制與App應用開發形式

Splunk提供融合了使用者技術社群與App市集概念的Splunkbase網站,擴大各種相關應用的發展,讓使用者可以透過社群互相支援、討論,並且上傳、分享自己所開發的各式Splunk App或附加元件(add-on)。

可塑性高是優點也是缺點

Splunk自認是IT搜尋引擎,然而或許有人想問,這跟一般人所認知的網頁搜尋引擎之間的差異是什麼?這跟知識管理系統的分別何在?如果我無法明確知道要搜尋的目標,以及所要分析的資料記錄的關聯性,Splunk這樣的系統會不會無用武之地?

在一般網頁搜尋引擎或知識管理系統查詢所需資料時,除了主要是基於關鍵字的條件,並且用同音、同義、近似字等方式,將可能相關的原始資料內容與所在位置,列在查詢結果中。這些服務或產品當中,有些支援的資料格式雖然非常多元,但強調的是找到正確的資料內容所在、知識共享,便於使用者之間的協同作業。此外,這些產品所針對的資料源大多是文件,幾乎很少會特別涵蓋到Log檔。

而Splunk的搜尋是用更精確的條件式來進行,不只是找到所需的資料,還要提供分析、統計、報表、警示等機制。Splunk臺灣區總經理林岳樺認為,Splunk的搜尋是基於企業管理資料的商業邏輯,並於搜尋後可呈現原始資料,或立即再進行統計分析,以提供報表或是視覺化的儀表板或警示,特色在於所有資料處理、分析,都是利用單一平臺、單一技術來進行。

相較之下,傳統的日誌管理、系統/資安管理或是商業智慧管理系統,都是將資料進行正規化或透過ETL的方式處理後,再寫入資料庫,而IT人員再撰寫應用程式,透過SQL來擷取所需資料,再撰寫畫面、報表、告警、儀表板等功能,開發出應用程式。

就Splunk搜尋的方式來說,也有別於搜尋引擎的作法。精誠資訊數據加值應用發展部技術經理陶靖霖表示,若要涵蓋不確定的條件來搜尋Splunk內所收集的資料,用戶可以在輸入時搭配萬元字元「*」。例如,輸入fail*,你可以找到fail、failed和failure。再加上Splunk也有「相關詞提示」的功能,可協助查詢者輸入比較精確的關鍵字,例如輸入fail時,系統會自動提示fail、failure各有幾筆,這樣查詢者就知道應該輸入哪一個關鍵字才是正確的,若輸入failed則會找不到(因為系統沒有提示)。

至於如何將這種精確搜尋的機制來因應不同應用,Splunk主要是透過App的方式進行,由他們和社群來發展各式各樣的Splunk App,用戶再藉由App來擷取、解析和索引所需的資料源,去達到不同的目的。而且,這些App大部分都是可以免費下載使用的。

整體而言,這樣的應用架構相當彈性,然而,基於Splunk平臺所發展出來的App數量,雖然已經很豐富,若需要進一步建置出更貼近自己環境需求的解決方案,企業必須要設法讓IT人員熟悉這樣的平臺,才能發展出最適合本身環境應用的App。例如要搜尋所要的資料時,他們需要學會使用Splunk專屬的搜尋指令,而不是用多數IT人所熟悉的SQL語法,同時也要了解Splunk App Framework的開發框架,掌握App堆疊的方式,與相關元件在實作上的彼此關係。

當然,你也可以請廠商協助開發或代為客製。這麼做,雖然可以獲得更大的使用彈性,不會受限於套裝產品的功能和規格,但自行發展牽涉到的影響因素也不少,無法像套裝解決方案那樣,可以直接導入、使用。

由於應用範圍很廣,之前Splunk在定位上很難歸類在特定的產品類型上。最為人所熟悉的,仍然是在Log管理的部份,因此在IT維運管理、應用程式管理、網頁使用行為與流量分析的運用上,較為普遍,但它其實還可以用在資訊安全管理、法規遵循,以及業務分析。

從相關進階應用來看,Splunk自己發展了一些App。例如針對資訊安全管理,他們推出了Splunk App for Enterprise Security,法規遵循則有Splunk App for PCI Compliance,對於巨量資料的分析應用,他們最近發布了Splunk Hadoop Connect與Splunk App for HadoopOps。

Splunk自己開發的資安事件管理App

針對資安事件管理的需求,Splunk也推出了專用的App,名為Splunk App for Enterprise Security,目前最新版本為2.0.2。圖中為針對惡意程式活動的監控。


相關報導請參考「你有做Log檔管理嗎?」


Advertisement

更多 iThome相關內容