項目由來
(1)開發人員不能登錄線上服務器查看詳細日志,經過運維周轉費時費力
(2)日志數據分散在多個系統,難以查找與整合
(3)日志數據量巨大,查詢速度太慢,無法滿足需求
(4)無法全局掌控項目運行狀況
(5)日志數據查詢不夠實時
(6)數據分析人員不會寫代碼,無法分析統計數據
(7).........
框架里包含的組件
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更加輕量級和易部署,對系統資源開銷更小。
后續貼圖。
ELK實時日志分析平台環境部署--完整記錄