1. 程式人生 > >基於Fluentd的EFK日誌收集方案

基於Fluentd的EFK日誌收集方案

關於系統日誌收集處理方案,其實有很多種,因為之前使用ES比較多,所以也認為ELK是一個不錯的解決方案,ELK(Elasticsearch + Logstash + Kibana)來管理日誌。Logstash是一個具有實時渠道能力的資料收集引擎,但和fluentd相比,它在效能上表現略遜一籌,故而逐漸被fluentd取代,ELK也隨之變成EFK。

EFK由ElasticSearch、Fluentd和Kiabana三個開源工具組成。其中Elasticsearch是一款分散式搜尋引擎,能夠用於日誌的檢索,Fluentd是一個實時開源的資料收集器,而Kibana 是一款能夠為Elasticsearch 提供分析和視覺化的 Web 平臺。這三款開源工具的組合為日誌資料提供了分散式的實時蒐集與分析的監控系統。

為了更好的瞭解EFK的架構,首先,我們先理解下ELK架構。在此之前,
我們需要清楚如下幾個概念:

  • Log Source:日誌來源。在微服務中,我們的日誌主要來源於日誌檔案和Docker容器,日誌檔案包括伺服器log,例如Nginx access log(記錄了哪些使用者,哪些頁面以及使用者瀏覽器、ip和其他的訪問資訊), error log(記錄伺服器錯誤日誌)等。
  • Logstash:資料收集處理引擎,可用於傳輸docker各個容器中的日誌給EK。支援動態的從各種資料來源蒐集資料,並對資料進行過濾、分析、豐富、統一格式等操作,然後儲存以供後續使用。
  • Filebeat:和Logstash一樣屬於日誌收集處理工具,基於原先 Logstash-fowarder 的原始碼改造出來的。與Logstash相比,filebeat更加輕量,佔用資源更少
  • ElasticSearch:日誌搜尋引擎
  • Kibana:用於日誌展示的視覺化工具
  • Grafana:類似Kibana,可對後端的資料進行實時展示

整個解決方案就是:filebeat收集容器中的日誌。ElasticSearch收到日誌對日誌進行實時儲存、搜尋與分析。我們可在Kibana和Grafana這兩個視覺化工具中檢視日誌的操作結果。