logstash VS splunk


web 系統是典型的分布式部署,由此對其運行狀況,硬件運轉情況監控也顯得尤為重要,這些監控數據表面上對業務運行沒有多大的用處(屬於基礎數據),但正是這些基礎數據形成了業務“流”。比如,用戶搜索愛好,瀏覽商品愛好,購買愛好、分布,用戶成員之間的關系(在推薦系統中比較常見)。

 

現在成熟的web監控系統,有logstash—開源免費,splunk—不開源,有免費的版本但數據大小有限制,現在對比下這兩個系統,我跳過這兩個系統安裝步奏。

LogStash

1、定義: 時間+事件=日志;

2、語言實現:

          客戶端用ruby實現,依賴JRuby等,嵌入了elasticsearch,形成logstash-1.2.2-flatjar.jar 大約20M的包,個人而言很不喜歡這種方式,在生產環境中是不會把存儲和搜集放到一個地方的,但官方卻加入了es且你不能修改配置。

3、體系架構:        

可以看出這是典型的:數據源+Broker+存儲+webUI,這套體系非常靈活從數據采集到數據輸出都可以自定義,尤其是后端的Search 使用ES,ES這個搜索引擎鼎鼎大名,我非常喜歡他查詢DSL,呵呵。

4、input ,output配置:

 

這是個最簡單的日志監控了,結果輸出到es中,當然也可以輸出到redis中,這里的輸出位置可以配置是個很討人喜歡的功能;其input的type是ES的存儲索引表,這個可以自定義,其他filter也是可以配置的這樣可以只收集需要的信息,非常靈活,(splunk也可自定義的,下面我再分析)(題外話,logstash在windows安裝有點麻煩,要仔細點),我們看看官方提供的配置,如下

這里我只截了部分圖,可以說非常齊全,具體的可以參考http://logstash.net/docs/1.2.2/    

5、ES 存儲:

這里存儲也是可以配置的,我配置為3個片,2個副本,其實日志屬於內部使用,訪問量很小,所以可以節約點用存儲成本,從上面可以看出索引名是系統自動生成的好處是很明顯一天一個日志類別,不好的是如果我想某個域下的日志放到一起,是不能自定義的。

可以看出其日志搜集是一行一行讀取的,如果你在記事本寫一大塊日志信息而存儲到ES中,可能回出現多行日志的錯覺,這個不是很重要

6、web UI:

logstash 1.2.2版本使用了全新的webUI 大致是htm5+JS構成,這樣可以搭建個獨立web Ui 而不必像之前的版本那樣”粘“在一起。這個UI和splunk UI有點類似,但其功能遠沒有splunk UI豐富

7、事件預警:

          logstash 可以執行script,exec程序達到預警的作用(本人沒有使用這個功能)

8、外部接口:

           ES rest風格接口非常強大,完全可以定制化

基於上面幾個方面的對比,logstash 這套系統,配置靈活,天生融入ES引擎,webUI 就我個人來說其體驗不好,單調繁瑣,可能以后的版本的會改進吧。如果你有時間完全可以使用其數據源服務,后端存儲使用ES,WEbUI 自己寫

 

 

 Splunk 

1、定義:IT數據收集,分析器 。范圍挺廣的

2、語言:C/C++,Python

3、架構:

splunk 不開源,其關鍵模塊index,我猜想可能為luncen C++版本吧(現成的不要,難道從頭到尾寫搜索引擎?)

4、input,output 配置:

splunk配置更為強大,提供了默認的全局配置(default),及個性化定制(local),收集的數據頗多

從配置可以看出Index 這個關鍵配置,filter也是可以配置的,是可以把數據按需分別存儲的,這個比logstash 靈活,其中host是機器名,推薦手寫,否則splunk 自動收集未必是你想要的

5、服務端存儲:

增加indexes.conf配置,默認所有數據存儲到main索引中,推薦數據分開存儲,由於其不開源,所以無法看到內部數據存儲具體樣式,當然可以看到存儲文件路徑的

6、web UI 

 幾個關鍵字段,index,host,sourcetype這幾個最好自定義處理,splunk 提供以下幾個非常有用的功能

     1)、是“字段提取”,這樣達到靈活日志切割,而logStash是沒有這個功能的,但是splunk 的字段提取是在搜集之后執行的,如果在收集數據時就執行這個功能,那性能應該比收集完后提供高

     2)、splunk 提供了job配置功能,這個類似數據存儲過程了,非常強大,如圖。(我手動執行的這個job,統計30秒內日志中錯誤,按類別,host,由於Job太多所以不貼圖了)

 

     3)、splunk 提供了權限管理,這個也很棒的

     4)、可以把除日志之外的數據手動上傳到splunk,splunk實現分析,統計

     5)、splunk支持集群搜索

     6)、支持UI端索引操作

     7)、五花八門的報表,這個有點花俏了—個人觀點

7、外部接口

    支持REST風格的python,java,C#客戶端

8、預警功能

    預警功能是我自己開發的一個子程序,很簡單,項目內部使用RX net EDA驅動和TASK協作實現,支持郵件,短信,只需配置就幾個文件就行了,報警形式大致 如:

    “時段:xx,機器:xx,類別:xx,數量:xx”,項目結構如下:

9、splunk 提供的功能五花八門,常用的就那么幾個

10、splunk其他功能這里我不再贅訴

總結如下:

這兩個系統,架構都遵循了,數據源+格式化,過濾+分布式存儲+web UI,其實這里也隱含了監控系統架構的模式

1)、獨立agent或者是寄宿式agent,(我們內存net異常監控AIC系統就是使用的寄宿式agent)

2)、直接和服務端交互或者通過broker (分布式系統中大多使用了broker這種模式)

,在結構上logstash 更加靈活,而splunk 一手包辦,從目前來看splunk功能更強大,以后呢?期待logstash,我更喜歡開源的項目

3)、這兩個系統都缺乏事件處理跟蹤了,當然這個有點超出其系統本身范圍了,而我們內部的AIC系統是集成了net日志搜集,分析,事件跟蹤但缺少一般日志收集分析,正好二者互補了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM