1. 程式人生 > >集中式日誌分析平臺 Elastic Stack(介紹)

集中式日誌分析平臺 Elastic Stack(介紹)

喜歡 存儲 轉換成 redis 版本 個數 將他 報表 ash

一、ELK 介紹

ELK 構建在開源基礎之上,讓您能夠安全可靠地獲取任何來源、任何格式的數據,並且能夠實時地對數據進行搜索、分析和可視化。

最近查看 ELK 官方網站,發現新一代的日誌采集器 Filebeat,他是 Beats 家族其中的一員,性能超越 logstash,部署簡單,占用資源少,可以很方便的和 logstash,ES 對接。

從官方網站可以看出新一代 ELK 架構如下:

技術分享圖片

1、Beats

Beats 平臺集合了多種單一用途數據采集器。這些采集器安裝後可用作輕量型代理,從成百上千或成千上萬臺機器向 Logstash 或 Elasticsearch 發送數據。

Beats 家族各采集器如下:

技術分享圖片

Beats 是數據采集的得力工具。將這些采集器安裝在您的服務器中,它們就會把數據匯總到 Elasticsearch。如果需要更加強大的處理性能,Beats 還能將數據輸送到 Logstash 進行轉換和解析。

Filebeat 內置的多種模塊(auditd、Apache、NGINX、System 和 MySQL)可實現對常見日誌格式的一鍵收集、解析和可視化。得益於自動檢測您操作系統的默認配置並進行組合,和 Elasticsearch Ingest Node 的管道定義,以及自帶了常見的 Kibana 儀表板。

技術分享圖片

2、Logstash

Logstash 是開源的服務器端數據處理管道,能夠同時從多個來源采集數據,轉換數據,然後將數據發送到您最喜歡的 “存儲庫” 中。(我們的存儲庫當然是 Elasticsearch。)

數據往往以各種各樣的形式,或分散或集中地存在於很多系統中。 Logstash 支持各種輸入選擇 ,可以在同一時間從眾多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕松地從您的日誌、指標、Web 應用、數據存儲以及各種 AWS 服務采集數據。

數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕松、更快速地分析和實現商業價值。

借助 Pipeline 管理圖形界面來管理 Logstash 的部署,您可以輕而易舉地治理數據加工管道。此外,此項管理功能也與 Elastic Stack 內置的安全特性無縫集成,用以避免任何意外操作。

技術分享圖片

3、Elasticsearch

Elasticsearch 是基於 JSON 的分布式搜索和分析引擎,專為實現水平擴展、高可靠性和管理便捷性而設計。

Elasticsearch 是一個分布式的 RESTful 風格的搜索和數據分析引擎,能夠解決不斷湧現出的各種用例。作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。

Elasticsearch 允許執行和合並多種類型的搜索 ( 結構化、非結構化、地理位置、度量指標 )搜索方式隨心而變。先從一個簡單的問題出發,試試看能夠從中發現些什麽。

4、Kibana

Kibana 能夠以圖表的形式呈現數據,並且具有可擴展的用戶界面,供您全方位配置和管理 Elastic Stack。

Kibana 核心搭載了一批經典功能:柱狀圖、線狀圖、餅圖、旭日圖,等等。它們充分利用了 Elasticsearch 的聚合功能。

技術分享圖片

技術分享圖片

技術分享圖片

ELK中各組件承擔的角色和功能

Elasticsearch:分布式搜索和分析引擎,具有高可伸縮、高可靠和易管理等特點。基於 Apache Lucene 構建,能對大容量的數據進行接近實時的存儲、搜索和分析操作。通常被用作某些應用的基礎搜索引擎,使其具有復雜的搜索功能;
Logstash:數據處理引擎,它支持動態的從各種數據源搜集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES;
Kibana:數據分析和可視化平臺。與 Elasticsearch 配合使用,對數據進行搜索、分析和以統計圖表的方式展示;
Filebeat:ELK 協議棧的新成員,一個輕量級開源日誌文件數據搜集器,使用 golang 基於 Logstash-Forwarder 源代碼開發,是對它的替代。在需要采集日誌數據的 server 上安裝 Filebeat,並指定日誌目錄或日誌文件後,Filebeat 就能讀取數據,迅速發送到 Logstash 進行解析。

二、ELK的幾種常見架構

1、All-In-One

在這種架構中,只有一個 Logstash、Elasticsearch 和 Kibana 實例,集中部署於一臺服務器。Logstash 通過輸入插件從多種數據源(比如日誌文件、標準輸入 Stdin 等)獲取數據,再經過濾插件加工數據,然後經 Elasticsearch 輸出插件輸出到 Elasticsearch,通過 Kibana 展示。

技術分享圖片

這種架構非常簡單,使用場景也有限。初學者可以搭建這個架構,了解 ELK 如何工作。

2、Logstash 分布式采集

這種架構是對上面架構的擴展,把一個 Logstash 數據搜集節點擴展到多個,分布於多臺機器,將解析好的數據發送到 Elasticsearch server 進行存儲,最後在 Kibana 查詢、生成日誌報表等。

技術分享圖片

這種結構因為需要在各個服務器上部署 Logstash,而它比較消耗 CPU 和內存資源,所以比較適合計算資源豐富的服務器,否則容易造成服務器性能下降,甚至可能導致無法正常工作。

3、Beats 分布式采集

這種架構引入 Beats 作為日誌搜集器。目前 Beats 包括四種:

  • Packetbeat(搜集網絡流量數據);
  • Topbeat(搜集系統、進程和文件系統級別的 CPU 和內存使用情況等數據);
  • Filebeat(搜集文件數據);
  • Winlogbeat(搜集 Windows 事件日誌數據)

Beats 將搜集到的數據發送到 Logstash,經 Logstash 解析、過濾後,將其發送到 Elasticsearch 存儲,並由 Kibana 呈現給用戶。

技術分享圖片

這種架構解決了 Logstash 在各服務器節點上占用系統資源高的問題。相比 Logstash,Beats 所占系統的 CPU 和內存幾乎可以忽略不計。另外,Beats 和 Logstash 之間支持 SSL/TLS 加密傳輸,客戶端和服務器雙向認證,保證了通信安全。

4、引入消息隊列機制的 Logstash 分布式架構

這種架構使用 Logstash 從各個數據源搜集數據,然後經消息隊列輸出插件輸出到消息隊列中。目前 Logstash 支持 Kafka、Redis、RabbitMQ 等常見消息隊列。然後 Logstash 通過消息隊列輸入插件從隊列中獲取數據,分析過濾後經輸出插件發送到 Elasticsearch,最後通過 Kibana 展示。

技術分享圖片

這種架構適合於日誌規模比較龐大的情況。但由於 Logstash 日誌解析節點和 Elasticsearch 的負荷比較重,可將他們配置為集群模式,以分擔負荷。引入消息隊列,均衡了網絡傳輸,從而降低了網絡閉塞,尤其是丟失數據的可能性,但依然存在 Logstash 占用系統資源過多的問題。

5、引入消息隊列機制的 Filebeat + Logstash 分布式架構

Filebeat 已經支持 kafka 作為 ouput,5.2.1 版本的 Logstash 已經支持 Kafka 作為 Input,和上面的架構不同的地方僅在於,把 Logstash 日誌搜集發送替換為了 Filebeat。這種架構是當前最為完美的,有極低的客戶端采集開銷,引入消息隊列,均衡了網絡傳輸,從而降低了網絡閉塞,尤其是丟失數據的可能性。

技術分享圖片

接下來我們進行初步的探視,利用測試環境體驗下ELK Stack + Filebeat,測試環境我們就不進行 Kafka 的配置了,因為他的存在意義在於提高可靠性。

集中式日誌分析平臺 Elastic Stack(介紹)