一.爲什麼需要日誌管理系統
- 保留現場
- 自知者自明
- 所有即將發生的,都取決於已經發生的
- 數據商業化運作
1.1 日誌管理系統的解決方案
- 機器上的日誌實時收集,存儲到日誌中心
- 給日誌建立索引,通過索引能很快找到日誌
- 架設web界面,在web上完成日誌的搜索
1.2 日誌管理系統的困難
- 日誌量很大,每天幾十億條
- 日誌的實時收集,延遲控制在分鐘級別
- 能夠在線水平擴展
1.3 業內解決方案-ELK
ELK 不是一款軟件,而是 Elasticsearch、Logstash 和 Kibana 三種軟件產品的首字母縮寫:
-
Elasticsearch:分佈式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點。基於 Apache Lucene 構建,能對大容量的數據進行接近實時的存儲、搜索和分析操作。通常被用作某些應用的基礎搜索引擎,使其具有複雜的搜索功能
-
Logstash:數據收集引擎。它支持動態的從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到用戶指定的位置
-
Kibana:數據分析和可視化平臺。通常與 Elasticsearch 配合使用,對其中數據進行搜索、分析和以統計圖表的方式展示
1.3.1 簡單ELK架構
把一個 Logstash 數據蒐集節點擴展到多個,分佈於多臺機器,將解析好的數據發送到 Elasticsearch server 進行存儲,最後在 Kibana 查詢、生成日誌報表等 。
1.3.2 引入消息隊列的ELK架構
使用 Logstash 從各個數據源蒐集數據,然後經消息隊列輸出插件輸出到消息隊列中。目前 Logstash 支持 Kafka、Redis、RabbitMQ 等常見消息隊列。然後 Logstash 通過消息隊列輸入插件從隊列中獲取數據,分析過濾後經輸出插件發送到 Elasticsearch,最後通過 Kibana 展示。
1.3.3 ELK方案的問題
- 運維成本高,每增加一個日誌收集,需要手動修改配置
- 監控缺失,無法準確獲取Logstash的狀態二. 日誌管理系統架構
二. 日誌收集系統架構
2.1 組件介紹
- Log Agent:日誌收集客戶端,用來收集服務器上的日誌
- Kafka:基於zookeeper協調的高吞吐量的分佈式隊列
- ES:elasticsearch,開源的分佈式搜索引擎,給文檔建立索引
- Hadoop:分佈式計算框架,能夠對大量數據進行分佈式處理的平臺