一搁凸、簡介
ELK 不是一款軟件葱轩,而是 Elasticsearch睦焕、Logstash 和 Kibana 三種軟件產品的首字母縮寫藐握。這三者都是開源軟件,通常配合使用垃喊,而且又先后歸于 Elastic.co 公司名下猾普,所以被簡稱為 ELK Stack。根據 Google Trend 的信息顯示本谜,ELK Stack 已經成為目前最流行的集中式日志解決方案
- Elasticsearch:分布式搜索和分析引擎初家,具有高可伸縮、高可靠和易管理等特點乌助×镌冢基于 Apache Lucene 構建,能對大容量的數據進行接近實時的存儲他托、搜索和分析操作掖肋。通常被用作某些應用的基礎搜索引擎,使其具有復雜的搜索功能上祈;
- 數據收集引擎培遵。它支持動態(tài)的從各種數據源搜集數據,并對數據進行過濾登刺、分析籽腕、豐富、統(tǒng)一格式等操作纸俭,然后存儲到用戶指定的位置皇耗;
- 數據分析和可視化平臺。通常與 Elasticsearch 配合使用揍很,對其中數據進行搜索郎楼、分析和以統(tǒng)計圖表的方式展示;
- ELK 協議棧的新成員窒悔,一個輕量級開源日志文件數據搜集器呜袁,基于 Logstash-Forwarder 源代碼開發(fā),是對它的替代简珠。在需要采集日志數據的 server 上安裝 Filebeat阶界,并指定日志目錄或日志文件后,Filebeat 就能讀取數據聋庵,迅速發(fā)送到 Logstash 進行解析膘融,亦或直接發(fā)送到 Elasticsearch 進行集中式存儲和分析。
二祭玉、架構及使用場景
2.1 最簡單的架構
在這種架構中氧映,只有一個 Logstash、Elasticsearch 和 Kibana 實例脱货。Logstash 通過輸入插件從多種數據源(比如日志文件岛都、標準輸入 Stdin 等)獲取數據律姨,再經過濾插件加工數據,然后經 Elasticsearch 輸出插件輸出到 Elasticsearch臼疫,通過 Kibana 展示
這種架構非常簡單线召,使用場景也有限。初學者可以搭建這個架構多矮,了解 ELK 如何工作缓淹。
2.2 Logstash 作為日志搜集器
這種架構是對上面架構的擴展,把一個 Logstash 數據搜集節(jié)點擴展到多個塔逃,分布于多臺機器讯壶,將解析好的數據發(fā)送到 Elasticsearch server 進行存儲,最后在 Kibana 查詢湾盗、生成日志報表等
這種結構因為需要在各個服務器上部署 Logstash伏蚊,而它比較消耗 CPU 和內存資源,所以比較適合計算資源豐富的服務器格粪,否則容易造成服務器性能下降躏吊,甚至可能導致無法正常工作。
2.3 Beats 作為日志搜集器
這種架構引入 Beats 作為日志搜集器帐萎。目前 Beats 包括四種:
Packetbeat(搜集網絡流量數據)比伏;
Topbeat(搜集系統(tǒng)、進程和文件系統(tǒng)級別的 CPU 和內存使用情況等數據)疆导;
Filebeat(搜集文件數據)赁项;
-
Winlogbeat(搜集 Windows 事件日志數據)。
Beats 將搜集到的數據發(fā)送到 Logstash澈段,經 Logstash 解析悠菜、過濾后,將其發(fā)送到 Elasticsearch 存儲败富,并由 Kibana 呈現給用戶悔醋。
這種架構解決了 Logstash 在各服務器節(jié)點上占用系統(tǒng)資源高的問題。相比 Logstash兽叮,Beats 所占系統(tǒng)的 CPU 和內存幾乎可以忽略不計芬骄。另外,Beats 和 Logstash 之間支持 SSL/TLS 加密傳輸充择,客戶端和服務器雙向認證德玫,保證了通信安全匪蟀。
因此這種架構適合對數據安全性要求較高椎麦,同時各服務器性能比較敏感的場景。
2.4 引入消息隊列機制的架構
Beats 還不支持輸出到消息隊列材彪,所以在消息隊列前后兩端只能是 Logstash 實例观挎。這種架構使用 Logstash 從各個數據源搜集數據琴儿,然后經消息隊列輸出插件輸出到消息隊列中。目前 Logstash 支持 Kafka嘁捷、Redis造成、RabbitMQ 等常見消息隊列。然后 Logstash 通過消息隊列輸入插件從隊列中獲取數據雄嚣,分析過濾后經輸出插件發(fā)送到 Elasticsearch晒屎,最后通過 Kibana 展示
這種架構適合于日志規(guī)模比較龐大的情況。但由于 Logstash 日志解析節(jié)點和 Elasticsearch 的負荷比較重缓升,可將他們配置為集群模式鼓鲁,以分擔負荷。引入消息隊列港谊,均衡了網絡傳輸骇吭,從而降低了網絡閉塞,尤其是丟失數據的可能性歧寺,但依然存在 Logstash 占用系統(tǒng)資源過多的問題燥狰。
2.5 基于 Filebeat 架構的配置部署詳解
前面提到 Filebeat 已經完全替代了 Logstash-Forwarder 成為新一代的日志采集器,同時鑒于它輕量斜筐、安全等特點龙致,越來越多人開始使用它。這個章節(jié)將詳細講解如何部署基于 Filebeat 的 ELK 集中式日志解決方案顷链,
因為免費的 ELK 沒有任何安全機制净当,所以這里使用了 Nginx 作反向代理,避免用戶直接訪問 Kibana 服務器蕴潦。加上配置 Nginx 實現簡單的用戶認證像啼,一定程度上提高安全性。另外潭苞,Nginx 本身具有負載均衡的作用忽冻,能夠提高系統(tǒng)訪問性能。