1. 程式人生 > 其它 >ElasticStack分散式搜尋引擎技術棧(ELK)介紹

ElasticStack分散式搜尋引擎技術棧(ELK)介紹

剛入職不久,就在公司跟前輩導師瞭解到Elastic技術棧,讓我著手準備負責部門ELK-Stack的相關工作,於是開始整理學習與總結。

由於本人所在的是某大型央企銀行的資訊科技部門,與各大資料庫交往比較密切,故本人對Elastic十分感興趣。

一、簡介

Elastic-Stack早期也稱為ELK,現統一叫ELK stack。這一套技術棧解決的是企業級的業務需求,能夠安全可靠地獲取任何來源、任何格式的資料,然後實時地對資料進行搜尋、分析和視覺化。

使用此產品的客戶聞名全球,有Google、Microsoft等等。現在國內的大廠也基本在投入Elastic服務。

ELastic的官網為:https://www.elastic.co/。

其核心由這四個元件構成:Elasticsearch(核心,開源搜尋引擎)、Kibana、Beats和 Logstash。

二、元件介紹

  1、ElasticSearch 是一個基於 Apache Lucene 的開源搜尋引擎。它通過RESTful API 來隱藏Lucene的複雜性,從而讓全文搜尋變得簡單。不過,Elasticsearch 不僅僅是 Lucene 和全文搜尋,我們還能這樣去描述它:

  • 分散式的實時檔案儲存,每個欄位都被索引並可被搜尋
  • 分散式的實時分析搜尋引擎
  • 可以擴充套件到上百臺伺服器,處理PB級結構化或非結構化資料

  ElasticSearch對資料進行搜尋、分析和儲存,其是基於JSON的分散式搜尋和分析引擎,專門為實現水平可擴充套件性、高可靠性和管理便捷性而設計的

它的實現原理主要分為以下幾個步驟:

    1)首先使用者將資料提交到ElasticSearch資料庫中;

    2)再通過分詞控制器將對應的語句分詞;

    3)將分詞結果及其權重一併存入,以備使用者在搜尋資料時,根據權重將結果排名和打分,將返回結果呈現給使用者;

  2、Kibana實現資料視覺化,其作用就是在ElasticSearch中進行民航。Kibana能夠以圖表的形式呈現資料,並且具有可擴充套件的使用者介面,可以全方位的配置和管理ElasticSearch。

    Kibana最早的時候是基於Logstash建立的工具,後被Elastic公司在2013年收購。

    1)Kibana可以提供各種視覺化的圖表;

    2)可以通過機器學習的技術,對異常情況進行檢測,用於提前發現可疑問題;

  3、Beats是一個面向輕量型採集器的平臺,這些採集器可以從邊緣機器向Logstash、ElasticSearch傳送資料,它是由Go語言進行開發的,執行效率方面比較快。從下圖中可以看出,不同Beats的套件是針對不同的資料來源。

  4、Logstash是動態資料收集管道,擁有可擴充套件的外掛生態系統,支援從不同來源採集資料,轉換資料,並將資料傳送到不同的儲存庫中。其能夠與ElasticSearch產生強大的協同作用,後被Elastic公司在2013年收購。

    它具有如下特性:

    1)實時解析和轉換資料;

    2)可擴充套件,具有200多個外掛;

    3)可靠性、安全性。Logstash會通過持久化佇列來保證至少將執行中的事件送達一次,同時將資料進行傳輸加密;

    4)監控;

    對於日誌的解決方案一般分為:日誌搜尋、格式化分析、全文檢索、風險告警;

三、學習ElasticSearch的層面:

 1、開發層面

    1)瞭解ElasticSearch有基本功能;2)底層分散式工作原理;3)針對資料進行資料建模;

  2、運維層面

    1)進行叢集的容量規劃;2)對叢集進行滾動升級;3)對效能的優化;4)出現問題後,對問題的診斷與解決;

  3、方案層面

    1)學習ElasticSearch後,可以針對實際情況,解決搜尋的相關問題;2)可以將ELK運用到大資料分析場景中;

四、ElasticSearch的主要功能與應用場景:

  1、主要功能:

    1)、海量資料的分散式儲存以及叢集管理,達到了服務與資料的高可用以及水平擴充套件;

    2)、近實時搜尋,效能卓越。對結構化、全文、地理位置等型別資料的處理;

    3)、海量資料的近實時分析(聚合功能)

  2、應用場景:

    1)網站搜尋、垂直搜尋、程式碼搜尋;

    2)日誌管理與分析、安全指標監控、應用效能監控、Web抓取輿情分析;

五、ElasticSearch與資料庫BD整合:

  

  針對上圖,可以分為兩種情況:

  1、將ElasticSearch當成資料庫來儲存資料,好處是架構比較簡單;

  2、若資料更新比較頻繁,同時需要考慮資料事務性時,應該先將資料存入資料庫,然後建立一個合適的同步機制,將資料同步到ElasticSearch中;

日誌處理:

Keep moving forwards~