2015年1月2日 星期五

Logstash – 威力強大的日誌收集工具

身為系統管理員,一定對日誌有種深切的體會,那就是又愛又恨。
為什麼愛?因為他是當你在找出問題發生的原因的時候,所必需的東西。
為什麼恨?因為資料量多如牛毛,尤其是伺服器不止一檯的時候更是如此。

Logstash 的功能,主要是用來集中日誌,但是跟傳統的系統日誌差異點在於收集的方式。
傳統系統日誌收集方式必須要透過內部的 unix socket 或是 pipe 或是小程式,來提供管道寫入檔案之中,此外的話就是自己在日誌檔的資料夾下面,自己建立檔案去做讀寫。
這種方法在你有零星幾檯伺服器的時候可行,但是當你有數十檯到數百檯機器的時候,檢查日誌就會變成一種苦差事,即便 syslog 有提供集中管理的功能,但是依舊缺乏結構化,除了自己寫程式檢查之外,只能用工人智慧來監看日誌了。
而 Logstash 的出現一次解決了許多問題,包含日誌集中,結構化日誌,日誌分析,最重要的是社群為他寫了許多的附加程式,可以對接很多種資料來源以及輸出到各種地方,比 較普遍的就是將 Logstash 所收集到的資料,傳送到 ElasticSearch 做儲存以及視覺化的工作。
安裝 Logstash 十分簡單,你只要安裝好 JRE,接下來就是去 http://logstash.net/ 下載 Logstash 的程式檔案,解壓縮之後,進入資料夾裡面執行以下指令

bin/logstash -e 'input { stdin { } } output { stdout {} }'
之後當你隨意打一些字串,按下enter之後,可以看到他在重複一次你所打的字串,就可以確定你的 Logstash 執行成功了。
至於後面所帶的參數是什麼意思?詳細的之後再介紹,在這裡的意思,簡單來說就是將你從標準輸入進來的資料,經過 Logstash 處理之後,傳送到標準輸出來做顯示。
由於我們並沒有對內容做任何動作,所以就會原汁原味地看到你本來所輸入的字串。