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作爲傳統數據庫的一個補充,提供了數據庫所不不能提供的很多功能,如全文檢索,同義詞處理,相關度排名。


人生無常大腸包小腸

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章