現主流的日誌分析系統有 logstash 和 flume,結合好多網上前輩的說法,彙總了一下,希望和大家分享與探討,有不同的想法歡迎留言。
Flume
Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統;
支持定製各類數據發送方,便於收集數據,一般和 kafka 訂閱消息系統搭配較多;
目前有兩個版本,OG和NG,區別很大,感興趣的可以去研究一下;
特點:
1、側重數據傳輸,有內部機制確保不會丟數據,用於重要日誌場景;
2、由java開發,沒有豐富的插件,主要靠二次開發;
3、配置繁瑣,對外暴露監控端口有數據。
logstash
elastic.co的一個開源的數據收集引擎,可動態的統一不同的數據源的數據至目的地;
目的處理並收集日誌格式,搭配elasticsearch進行分析,kibana進行頁面展示;
目前最新版本5.3,集成了上述兩個搭檔,參考官網詳解。
特點:
1、內部沒有一個persist queue,異常情況可能會丟失部分數據;
2、由ruby編寫,需要ruby環境,插件很多;
3、偏重數據前期處理,分析方便。
flume | logstash | |
結構上 | Source、Channel、Sink | Shipper、Broker、Indexer |
簡易程度 | 很繁瑣,要分別作source、channel、sink的手工配置,而且涉及到複雜的數據採集環境 | 簡潔清晰,三個部分的屬性都定義好了,只需選擇就好,而且可以自行開發插件 |
歷史背景 | 最初設計的目的是爲了把數據傳入HDFS中,側重傳輸(多路由),重穩定性 | 側重對數據的預處理,因爲日誌的字段需要大量的預處理,爲解析做鋪墊 |
對比 | 像是散裝的臺式機,使用較麻煩,工具繁多,需要根據業務選擇 | 更像是組裝好的臺式機,使用簡單方便,搭配ELK更高效 |