筆者接觸到ELK是由於公司項目採用微服務架構,這樣在部署時各個服務需要在不同機器上,而且每個服務部署好幾份,這個時候日誌到收集就是問題了,不能像之前那樣單體應用都在一個機器,可以直接登錄查看,所以就開始去了解ELK,最後用ELK+Kafka來完成日誌收集處理並展現,而且ELK在大數據行業應用也很廣泛。
一、ELK介紹
ELK Stack是軟件集合Elasticsearch、Logstash、Kibana的簡稱,它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash,官方也推薦此工具。
Elasticsearch 是一個基於 Lucene 的、支持全文索引的分佈式存儲和索引引擎,主要負責將日誌索引並存儲起來,方便業務方檢索查詢。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
Logstash是一個日誌收集、過濾、轉發的中間件,主要負責將各條業務線的各類日誌統一收集、過濾後,轉發給 Elasticsearch 進行下一步處理。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
Kibana是一個可視化工具,也是一個開源和免費的,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助彙總、分析和搜索重要數據日誌。
Filebeat隸屬於Beats。目前Beats包含四種工具:
1、Packetbeat(蒐集網絡流量數據)
2、Topbeat(蒐集系統、進程和文件系統級別的 CPU 和內存使用情況等數據
3、Filebeat(蒐集文件數據)
4、Winlogbeat(蒐集 Windows 事件日誌數據)
官方文檔:
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat
https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html
Logstash:
https://www.elastic.co/cn/products/logstash
https://www.elastic.co/guide/en/logstash/5.6/index.html
Kibana:
https://www.elastic.co/cn/products/kibana
https://www.elastic.co/guide/en/kibana/5.5/index.html
Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
elasticsearch中文社區:
部分資料來源:
elk原理:https://www.cnblogs.com/aresxin/p/8035137.html
推薦博客:
ELK架構體系、ELK運行原理、ELK應用場景、ELK簡單介紹(一):https://blog.csdn.net/zjh_746140129/article/details/86483318
Linux安裝ELK、elasticsearch部署安裝(二):https://blog.csdn.net/zjh_746140129/article/details/86483661
Linux安裝ELK、logstash部署安裝(三):https://blog.csdn.net/zjh_746140129/article/details/86484586
Linux安裝ELK、kibana部署安裝(四):https://blog.csdn.net/zjh_746140129/article/details/86484862
二、ELK架構體系
架構圖一:
這是最簡單的一種ELK架構方式。優點是搭建簡單,易於上手。缺點是Logstash耗資源較大,運行佔用CPU和內存高。另外沒有消息隊列緩存,存在數據丟失隱患。
此架構由Logstash分佈於各個節點上搜集相關日誌、數據,並經過分析、過濾後發送給遠端服務器上的Elasticsearch進行存儲。Elasticsearch將數據以分片的形式壓縮存儲並提供多種API供用戶查詢,操作。用戶亦可以更直觀的通過配置Kibana Web方便的對日誌查詢,並根據數據生成報表。
架構圖二:
此種架構引入了消息隊列機制,位於各個節點上的Logstash Agent先將數據/日誌傳遞給Kafka(或者Redis),並將隊列中消息或數據間接傳遞給Logstash,Logstash過濾、分析後將數據傳遞給Elasticsearch存儲。最後由Kibana將日誌和數據呈現給用戶。因爲引入了Kafka(或者Redis),所以即使遠端Logstash server因故障停止運行,數據將會先被存儲下來,從而避免數據丟失。
架構圖三:
此種架構將收集端logstash替換爲beats,更靈活,消耗資源更少,擴展性更強。同時可配置Logstash 和Elasticsearch 集羣用於支持大集羣系統的運維日誌數據監控和查詢。
三、ELK運行原理
四、ELK應用場景
五、ELK安裝部署集成