經常使用的日誌收集系統有Syslog-ng,Scribe,Flume,固然還有ELK的LogStash.而目前互聯網公司最長用的時Scribe和Flume,Scibe是Facebook開源的,可是如今已經不維護,因此不推薦使用。redis
Scribe是Facebook開源的日誌收集系統,在facebook內部已經獲得大量的應用。Scribe是基於一個非阻斷C++服務的實現。它可以從各類日誌源上收集日誌,存儲到一箇中陽存儲系統。mongodb
三個角色:json
Logstash是ELK中的一個工具,在ELK中起到的做用是對日誌進行收集、分析、過濾。服務器
上圖所示,由三個組件組成:框架
Flume是分佈式的、可靠的、高性能、可擴展的的日誌收集框架。分佈式
Flume的Agent工具
Agent由三部分組成:性能
三個角色:搜索引擎
Scribe:C++編寫,如今已經再也不維護,不推薦使用插件
Logstash: 針對日誌收集,搜索,計算,可視化有一系列的產品,而且可以使用的插件以及社區較爲活躍推薦使用
Flume: Java編寫,較爲靈活,而且吞吐量高。業界已經驗證過,建議使用。
從上面能夠看出日誌收集框架基本都是三個組件:
Agent : 部署在各個應用服務器,來收集應用的日誌
Collector: 日誌收集中心,把分散在Agent的統一統一收集到日誌中心
Storage: 存儲層,日誌收集以後的存儲
注: 這裏的日誌收集框架只是最簡單的,若是數據量過大,以及考慮數據收集的可靠。能夠在中間添加kafka或者redis等中間件,保證可靠以及緩衝等做用。