ELK簡介


ELK簡介

1 ELKStack是什么

  對於日志來說,最常見的需求就是收集、存儲、查詢、展示,開源社區正好有相對應的開源項目:logstash(收集)、elasticsearch(存儲+搜索)、kibana(展示),我們將這三個組合起來的技術稱之為ELKStack,所以說ELKStack指的是Elasticsearch、Logstash、Kibana技術棧的結合,由這三個軟件及其相關的組件可以打造大規模日志實時處理系統。
  ELK的官方網站為:https://www.elastic.co/cn/,大家可以從其中文官方網站了解到更詳細的內容。現在主要簡單介紹一下,Elasticsearch、Logstash、Kibana的相關功能。

1.1 Logstash+Beats簡介

  在ELK剛出來時,日志的抓取工作主要是由Logstash組件負責,Logstash 是一個日志收集、過濾、轉發的中間件,主要負責將各條業務線的各類日志統一收集、過濾后,轉發給 Elasticsearch 進行下一步處理。LogStash使用Java編寫,插件是使用jruby編寫,基於消息(message-based)的簡單架構,並運行在Java虛擬機(JVM)上。不同於分離的代理端(agent)或主機端(server),LogStash可配置單一的代理端(agent)與其它開源軟件結合,以實現不同的功能。
  但是由於LogStash是jvm跑的,資源消耗比較大,客戶端部署在服務器上會占用較大的CPU、內存等資源。因此ELK團隊使用golang寫了一個功能較少但是資源消耗也小的輕量級的Beats,逐漸取代LogStash進行日志的收集工作,而LogStash則主要對Beats收集的日志進行加工過濾。
  Beats是全品類采集器,搞定所有數據類型的抓取。包括Filebeat(日志文件采集)、Metricbeat(指標采集)、Packetbeat(網絡數據采集)、Winlogbeat(Windows事件日志采集)、Auditbeat(審計數據采集)、Heartbeat(運行時間監控采集)。

1.2 Elasticsearch簡介

  ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是第二流行的企業搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。
  ElasticSearch一些優勢特點,可以直接從官網獲取,以下為官網上的部分截圖說明:



1.3 Kibana簡介

  Kibana 是一個可視化工具,主要負責查詢 Elasticsearch 的數據並以可視化的方式展現給業務方,比如各類餅圖、直方圖、區域圖等。
  所謂“大規模”指的是 ELK 組成的系統以一種水平擴展的方式每天支持收集、過濾、索引和存儲 TB 規模以上的各類日志(注:1TB = 1024GB )。所謂“大規模”指的是 ELK 組成的系統以一種水平擴展的方式每天支持收集、過濾、索引和存儲 TB 規模以上的各類日志(注:1TB = 1024GB )。
  通常,各類文本形式的日志都在處理范圍,包括但不限於 Web 訪問日志,如 Nginx/Apache Access Log;應用運行時日志,如 Swift/PHP/Python/Ruby/Java/C# 等構建的應用程序在執行業務過程中記錄下來的日志。 通常,各類文本形式的日志都在處理范圍,包括但不限於 Web 訪問日志,如 Nginx/Apache Access Log;應用運行時日志,如 Swift/PHP/Python/Ruby/Java/C# 等構建的應用程序在執行業務過程中記錄下來的日志。

2 ELKStack工作原理

  從以下圖中可以看到其基本的工作原理:

  上圖是 ELK 實際應用中典型的一種架構,其中 beat或者Logstash 部署在具體的業務機器上,通過定時監控的方式獲取增量的日志,並轉發 push 到 Elasticsearch 中存儲。Elasticsearch 存儲並索引從 beat、Logstash 轉發過來的數據,並通過 Kibana 查詢和可視化展示,達到實時分析日志的目的。

3 其他開源日志分析軟件

  • Scribe
    Scribe是Facebook開源的日志收集系統,在Facebook內部已經得到的應用。它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(可以是NFS,分布式文件系統等)上,以便於進行集中統計分析處理。當采用HDFS作為中央系統時,可以進一步利用Hadoop進行處理數據,於是scribe+HDFS+MapReduce方案便誕生了。
  • Chukwa
    Apache 的開源項目 hadoop, 作為一個分布式存儲和計算系統,已經被業界廣泛應用。很多大型企業都有了各自基於 hadoop 的應用和相關擴展。當 1000+ 以上個節點的 hadoop 集群變得常見時,集群自身的相關信息如何收集和分析呢?針對這個問題, Apache 同樣提出了相應的解決方案,那就是 chukwa。
    chukwa 的官方網站是這樣描述自己的: chukwa 是一個開源的用於監控大型分布式系統的數據收集系統。這是構建在 hadoop 的 hdfs 和 map/reduce 框架之上的,繼承了 hadoop 的可伸縮性和健壯性。Chukwa 還包含了一個強大和靈活的工具集,可用於展示、監控和分析已收集的數據。 在一些網站上,甚至聲稱 chukwa 是一個“日志處理/分析的full stack solution”。 說了這么多,你心動了嗎?
  • Flume
    Flume最早是Cloudera提供的日志收集系統,目前是Apache下的一個孵化項目,Flume支持在日志系統中定制各類數據發送方,用於收集數據。
    Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定制)的能力 。Flume提供了從console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系統),支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。
  • Kafka
    Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解決。 對於像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消費。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM