1. 程式人生 > 其它 >ELKF++:ES 相關概念

ELKF++:ES 相關概念

1):Elastic Stack簡介 ↓ ↓ ↓

1.1:簡介

ELK是一個免費開源的日誌分析架構技術棧總稱,官網 https://www.elastic.co/cn

包含三大基礎元件,分別是 Elasticsearch、Logstash、Kibana。

但實際上ELK不僅僅適用於日誌分析,它還可以支援其它任何資料搜尋、分析和收集的場景,日誌分析和收集只是更具有代表性。

並非唯一性。下面是ELK架構:↓

隨著elk的發展,又有新成員Beats、elastic cloud的加入,所以就形成了Elastic Stack。

所以說,ELK是舊的稱呼,Elastic Stack是新的名字。

1.2:特色

處理方式靈活:elasticsearch是目前最流行的準實時全文檢索引擎,具有高速檢索大資料的能力。

配置簡單:安裝elk的每個元件,僅需配置每個元件的一個配置檔案即可。修改處不多,因為大量引數已經預設配在系統中,修改想要修改的選項即可。

介面簡單:採用json形式RESTFUL API接受資料並響應,無關語言。

效能高效:elasticsearch基於優秀的全文搜尋技術Lucene,採用倒排索引,可以輕易地在百億級別資料量下,搜尋出想要的內容,並且是秒級響應。

靈活擴充套件:elasticsearch和logstash都可以根據叢集規模線性拓展,elasticsearch內部自動實現叢集協作。

資料展現華麗:kibana作為前端展現工具,圖表華麗,配置簡單。

2.3:元件介紹

Elasticsearch ↓

  Elasticsearch 是使用java開發,基於Lucene、分散式、通過Restful方式進行互動的近實時搜尋平臺框架。

  它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。

Logstash ↓

  Logstash 基於java開發,是一個數據抽取轉化工具。

  一般工作方式為c/s架構,client端安裝在需要收集資訊的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch或其他元件上去。

Kibana ↓

  Kibana 基於nodejs,也是一個開源和免費的視覺化工具。

  Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以彙總、分析和搜尋重要資料日誌。

Beats ↓

  Beats 平臺集合了多種單一用途資料採集器。

  它們從成百上千或成千上萬臺機器和系統向 Logstash 或 Elasticsearch 傳送資料。

Beats由如下組成:↓

Packetbeat:

  輕量型網路資料採集器,用於深挖網線上傳輸的資料,瞭解應用程式動態。Packetbeat 是一款輕量型網路資料包分析器,能夠將資料傳送至 Logstash 或 Elasticsearch。

  其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等協議。

Filebeat:

  輕量型日誌採集器。當您要面對成百上千、甚至成千上萬的伺服器、虛擬機器和容器生成的日誌時,請告別 SSH 吧。

  Filebeat 將為您提供一種輕量型方法,用於轉發和彙總日誌與檔案,讓簡單的事情不再繁雜。

Metricbeat :

  輕量型指標採集器。Metricbeat 能夠以一種輕量型的方式,輸送各種系統和服務統計資料,從 CPU 到記憶體,從 Redis 到 Nginx,不一而足。

  可定期獲取外部系統的監控指標資訊,其可以監控、收集 Apache http、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服務。

Winlogbeat:

  輕量型 Windows 事件日誌採集器。用於密切監控基於 Windows 的基礎設施上發生的事件。

  Winlogbeat 能夠以一種輕量型的方式,將 Windows 事件日誌實時地流式傳輸至 Elasticsearch 和 Logstash。

Auditbeat:

  輕量型審計日誌採集器。收集您 Linux 審計框架的資料,監控檔案完整性。

  Auditbeat 實時採集這些事件,然後傳送到 Elastic Stack 其他部分做進一步分析。

Heartbeat:

  面向執行狀態監測的輕量型採集器。通過主動探測來監測服務的可用性。

  通過給定 URL 列表,Heartbeat 僅僅詢問:網站執行正常嗎?Heartbeat 會將此資訊和響應時間傳送至 Elastic 的其他部分,以進行進一步分析。

Functionbeat:

  面向雲端資料的無伺服器採集器。在作為一項功能部署在雲服務提供商的功能即服務 (FaaS) 平臺上後,Functionbeat 即能收集、傳送並監測來自您的雲服務的相關資料。

Elastic cloud:

  基於 Elasticsearch 的軟體即服務(SaaS)解決方案。通過 Elastic 的官方合作伙伴使用託管的 Elasticsearch 服務。

2):Elasticsearch 是什麼

2.1:搜尋是什麼 ?

概念:使用者輸入想要的關鍵詞,返回含有該關鍵詞的所有資訊。

場景:

  1、網際網路搜尋:谷歌、百度、各種新聞首頁

  2、站內搜尋(垂直搜尋):企業OA查詢訂單、人員、部門,電商網站內部搜尋商品(淘寶、京東)場景。

2.2:資料庫做搜尋的弊端

2.2.1:站內搜尋(垂直搜尋):資料量小,簡單搜尋,可以使用資料庫。

問題出現:

  l 儲存問題。電商網站商品上億條時,涉及到單表資料過大必須拆分表,資料庫磁碟佔用過大必須分庫(mycat)。

  l 效能問題:解決上面問題後,查詢“膝上型電腦”等關鍵詞時,上億條資料的商品名欄位逐行掃描,效能跟不上。

  l 不能分詞。如搜尋“膝上型電腦”,只能搜尋完全和關鍵詞一樣的資料,那麼資料量小時,搜尋“筆記電腦”,“電腦”資料要不要給使用者。

2.2.2:網際網路搜尋,肯定不會使用資料庫搜尋。資料量太大。PB級。

2.3:全文檢索、倒排索引 和 Lucene

全文檢索:

倒排索引。資料儲存時,經行分詞建立term索引庫。見畫圖。

倒排索引源於實際應用中需要根據屬性的值來查詢記錄。

這種索引表中的每一項都包括一個屬性值和具有該屬性值的各記錄的地址。

由於不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引(inverted index)。

帶有倒排索引的檔案我們稱為倒排索引檔案,簡稱倒排檔案(inverted file)。

Lucene:

就是一個jar包,裡面封裝了全文檢索的引擎、搜尋的演算法程式碼。開發時,引入lucen的jar包,通過api開發搜尋相關業務。底層會在磁碟建立索引庫。

2.4:什麼是 Elasticsearch

  Elasticsearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。

  Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放原始碼釋出,是一種流行的企業級搜尋引擎。

  Elasticsearch用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。

  官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。

  根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜尋引擎,其次是Apache Solr,也是基於Lucene。

官網:https://www.elastic.co/cn/products/elasticsearch

2.5:Elasticsearch 的功能 ?

2.5.1:分散式的 搜尋引擎 和 資料分析引擎

  搜尋:網際網路搜尋、電商網站站內搜尋、OA系統查詢

  資料分析:電商網站查詢近一週哪些品類的圖書銷售前十;新聞網站,最近3天閱讀量最高的十個關鍵詞,輿情分析。

2.5.2:全文檢索,結構化檢索,資料分析

  全文檢索:搜尋商品名稱包含java的圖書select * from books where book_name like "%java%"。

  結構化檢索:搜尋商品分類為spring的圖書都有哪些,select * from books where category_id='spring'

  資料分析:分析每一個分類下有多少種圖書,select category_id,count(*) from books group by category_id

2.5.3:對海量資料進行近實時的處理

  分散式:ES自動可以將海量資料分散到多臺伺服器上去儲存和檢索,經行並行查詢,提高搜尋效率。相對的,Lucene是單機應用。

  近實時:資料庫上億條資料查詢,搜尋一次耗時幾個小時,是批處理(batch-processing)。而es只需秒級即可查詢海量資料,所以叫近實時。秒級。

2.6:Elasticsearch 的使用場景

國外:

  1、維基百科,類似百度百科,“網路七層協議”的維基百科,全文檢索,高亮,搜尋推薦

  2、Stack Overflow(國外的程式討論論壇),相當於程式設計師的貼吧。遇到it問題去上面發帖,熱心網友下面回帖解答。

  3、GitHub(開原始碼管理),搜尋上千億行程式碼。

  4、電商網站,檢索商品

  5、日誌資料分析,logstash採集日誌,ES進行復雜的資料分析(ELK技術,elasticsearch+logstash+kibana)

  6、商品價格監控網站,使用者設定某商品的價格閾值,當低於該閾值的時候,傳送通知訊息給使用者,比如說訂閱《java程式設計思想》的監控,如果價格低於27塊錢,就通知我,我就去買。

   7、BI系統,商業智慧(Business Intelligence)。大型連鎖超市,分析全國網點傳回的資料,分析各個商品在什麼季節的銷售量最好、利潤最高。

    成本管理,店面租金、員工工資、負債等資訊進行分析。從而部署下一個階段的戰略目標。

國內:

  1、百度搜索,第一次查詢,使用 es。

  2、OA、ERP系統站內搜尋。

2.7:Elasticsearch 的使用場景

可拓展性:

  大型分散式叢集(數百臺伺服器)技術,處理PB級資料,大公司可以使用。小公司資料量小,也可以部署在單機。大資料領域使用廣泛。

技術整合:

  將全文檢索、資料分析、分散式相關技術整合在一起:lucene(全文檢索),商用的資料分析軟體(BI軟體),分散式資料庫(mycat)

部署簡單:

  開箱即用,很多預設配置不需關心,解壓完成直接執行即可。拓展時,只需多部署幾個例項即可,負載均衡、分片遷移叢集內部自己實施。

介面簡單:

  使用restful api經行互動,跨語言。

功能強大:

  Elasticsearch作為傳統資料庫的一個補充,提供了資料庫所不不能提供的很多功能,如全文檢索,同義詞處理,相關度排名。


人生無常大腸包小腸