項目由來html
(1)開發人員不能登陸線上服務器查看詳細日誌,通過運維週轉費時費力
(2)日誌數據分散在多個系統,難以查找與整合
(3)日誌數據量巨大,查詢速度太慢,沒法知足需求
(4)沒法全局掌控項目運行情況
(5)日誌數據查詢不夠實時
(6)數據分析人員不會寫代碼,沒法分析統計數據
(7).........web
框架裏包含的組件redis
Logstash+Elasticsearch+Kibana(ELK)
Logstash:監控,過濾,收集日誌。
Elasticsearch:存儲日誌,提供搜索功能。
kibana:提供web界面,支持查詢,統計,和圖表展示。
filebeat:輕量級的日誌收集工具。
不少公司都採用該架構構建分佈式日誌系統,包括新浪微博,freewheel,暢捷通等服務器
注意:在應用端收集日誌時,建議用filebeat。多線程
效果圖架構
架構設計框架
(1)使用filebeat
架構設計1:filebeat(1.3)-->logstash(parse)-->es集羣-->kibana--ngix
缺點:若是logstash出問題會致使filebeat收集的數據丟失
架構設計2:filebeat(1.3)-->logstash(parse)[loadbalance]-->es集羣-->kibana--ngix
filebeat和>logstash耦合性過高
架構設計3:filebeat(1.3)(3臺)-->redis-->logstash(parse)-->es集羣-->kibana--ngix(可選) (我這裏,目前爲了學習,走這條線路)
裏面redis是一個單線程的實例,redis單線程每秒處理能力通常是10W次左右。
架構設計4:filebeat(5.0)-->redis/kafka-->logstash(parse)-->es-->kibana--ngix
filebeat(1.3)不支持輸出到kafka,5.x版本中支持輸出到kafka
(2)不使用filebeat
logstash-->kafka-->logstash(parse)-->es-->kibana--ngix
裏面kafka支持水平擴展,能夠使用多分區,支持多線程並行執行。
在應用端收集日誌的話,logstash比較重量級,性能消耗比filebeat大
(3)Filebeat用於日誌收集和傳輸,相比Logstash更加輕量級和易部署,對系統資源開銷更小。運維
後續貼圖。分佈式