圖片來源: 

Asus提供

華碩IT部門與華碩雲端合作,用華碩雲端平臺(Asus Cloud Platform)與開源Solr技術來分析大量Log資料。華碩在2014年4月,採用Log蒐集儲存和解析的Logstash、企業級分析引擎Solr,以及提供視覺化報表功能的Kibana,還有用開源記憶體式資料庫Redis做為緩衝,來解決大量的Log資料處理與分析。

華碩IT部門專員李健志表示,因為目前僅是測試Logstash、Solr和Kibana,在這樣的架構下執行的效果,所以目前用3臺伺服器,且3臺伺服器同時兼任Logstash和SolrCloud的工作。不過,李健志建議,如果要提升效能和穩定性,最好把Logstash和SolrCloud的服務拆解至不同的伺服器執行。另外,華碩Solr目前1個月的資料大約500GB,平均每分鐘有30萬個事件,而每天約1億筆資料。

大量資料要能即時分析,才能即時搶救問題

李健志表示,在大量Log資料分析的議題中,面臨一個挑戰,分析Log的工具可以協助用戶執行一個簡單的查詢,但經過11分鐘36秒,還沒有執行結束,執行20多分鐘才結束查詢,且他常聽到華碩負責分析Log的工程師說,通常為了看複雜的Log分析,可能還得安裝別的工具或軟體,才能看到結果。

以往工程師知道防火牆出現問題,若是1小時候再處理,問題可能已經發展得非常嚴重,而處理Log的過程中也曾嘗試使用Hadoop,但Hadoop是批次處理,無法即時處理,遇到需要即時的Log分析時,不可能要負責的員工明天再來看分析結果。

另外,通常判斷Log記錄的情況都是電腦或系統出問題的時候,但Log記錄是一行行的文字,難以閱讀,且當資料量越來越大時,坊間處理Log資料的工具開始無法滿足使用者需求,處理Log資料的問題開始慢慢浮現在日常生活中,並且越來越重要。

李健志表示,如果沒有蒐集Log資料,並且解析,就不會發現一些無形的攻擊,尤其是在防火牆和各裝置的Log分析,對華碩而言,Log資料的分析和處理一直都是非常重要的議題。

坊間工具太昂貴,採用開源軟體自行開發Log分析工具

坊間也有一些不錯的工具,如Splunk提供資料監控功能,例如伺服器、Log的監控等,但是這些都不是免費的工具,且非常昂貴,成本是以千萬臺幣為單位的資料分析軟體,對企業而言要投入重大的成本購買,只為了分析以往會被大家忽略的Log資料,這樣真的值得嗎?

而在2014年4月,國外媒體有一則報導關於Splunk殺手(Splunk Killer),由企業搜尋軟體供應商LucidWorks採用開源軟體搭配,包含Logstash、Solr、Kibana等,開發出一套Splunk Killer,光是價格就比Splunk來得便宜。

李健志表示,當時看到這則報導後,華碩採用Logstash、Solr和Kibana來處理大量Log資料,並且借用華碩雲端在SolrCloud的經驗,採用SolrCloud做為搜尋引擎。SolrCloud是一種索引搜尋引擎,具備高可用性和高擴充性,且可以做到近乎即時的搜尋。

目前,華碩使用3臺伺服器來進行大量Log資料分析測試,3臺伺服器中,就算有一臺伺服器如果停機也不會影響服務,因為伺服器間會自動備援,如果發現機器效能變差、資料量變多,無法處理大量Log資料時,伺服器還可以橫向擴充,這也是大資料分析一直講求的可擴充性環境。

李健志表示,當初華碩預期,當事件發生時,必須提供用戶能夠在1分鐘內查詢結果。而最後完成的效果比預期的還要好,Log資料分析處理速度非常快,從原本得查詢20~30分鐘的Log資料,現在只需要約10秒就可以完成查詢。

而以往也只能個別分析Log記錄的檔案,且Log還來自於不同的裝置,難以處理,透過Logstash能夠簡單、有效、快速的處理Log資料,不過Logstash的主要功能是處理時間類型的Log,也就是在Log檔中有時間戳記(TimeStamp)的資料,而分析Log資料主要就是分析事件發生的時間和內容。

Logstash是一種引擎服務,直接下載Logstash後,就可以執行。工程師只需要寫設定檔(Config),設定Log資料的輸入來源、輸出位置等。

舉例來說,要將Apache Log資料匯入Solr伺服器裡,但Log資料又臭又長一大串,以往的方式就是得要一個一個解析,或是利用現成的分析工具,但是Logstash只要下Config指令,來設定檔案來源的路徑就可以將Log資料匯入,且Log記錄會一直成長,系統還可以讀取後來成長的資料。

另外,Logstash提供了輸入(Inputs)、解碼器(Codecs)、篩選(Filters)和輸出(Outputs)的附加元件(Plug-in),分別有41個Inputs、20個Codecs、50個Filters,以及55個Outputs,還可以使用Ruby語言客製化開發。

Input可以來自於微軟事件檢視器(Event Log)、不同的資料庫、Imap、Logj、文字檔等資料來源。Filter則是針對已讀取的資料,通常這些資料不見得能夠直接分析,裡面可能會有一些不需要用到的欄位,或是有些欄位需要加工,就可以在Filter內設定資料條件。Output可以指定資料輸出的位置,比較常用的是將資料寫進一個文字檔,也有支援Email、HTTP、Google BigTable、MongoDB、TCP等。

但有些裝置不支援轉換Log為文字檔,可以用Syslog的方式輸出,在Input選擇Syslog,Output選擇文字檔,這樣的方式可以轉換Log為一個檔案另外成行。還有其他方式如,向E-mail送一個HTTP的要求(Request)。

Logstash不需要安裝,只要解壓縮後就可以使用,不管Linux或Windows都是同一個版本,也就是說,工程師只要寫好一支Config程式,就可以到各裝置執行此程式來監控Log記錄。

而Kibana是一種前端顯示工具,不需要編寫程式就可以產生Log記錄的視覺化報表,並且提供使用者簡單的查詢方式。Kibana比起坊間的BI工具來得容易操作。

Kibana在產生圖表前,使用者先選擇需要顯示的欄位,然後系統進行資料加總等工作,接著產生圖表。另外,使用者還可以選擇時間區間,也可以選出峰值(Peak)的區間,不需要手動輸入查詢條件,系統就會自動送出,並且列出查詢的明細資料。

李健志表示,當資料量越來越大的時候,Solr會跟不上資料產生的速度,所以當資料量達到高峰時,會有一段資料不見。因此,華碩採用Redis資料庫做為緩衝,加強整個Log分析架構。所有資料先餵進Redis後,再從Redis送到SolrCloud,而在Redis和SolrCloud間則用Solr Commander來動態配置硬碟空間,避免硬碟空間不足的問題。

 

Kibana是一種視覺化圖表工具,提供使用者選擇報表的時間區間、欄位等資料,最後產出視覺化報表。(照片提供/Asus)

 

Kibana也提供使用者簡易的查詢方式,使用者可以選擇時間區間或峰值的區間,不需要手動輸入查詢條件,系統就會自動送出,並且列出查詢的明細資料。(照片提供/Asus)

 

唯一需要寫程式的部分僅有Config檔,不需要結構複雜的程式碼,設定Log檔案輸入和輸出位置,以及資料篩選條件。(照片提供/Asus)


Advertisement

更多 iThome相關內容