1.概述
在項目業務倍增的情況下,查詢效率受到影響,這里我們經過討論,引進了分布式搜索套件——ElasticSearch,通過分布式搜索來解決當下業務上存在的問題。下面給大家列出今天分析的目錄:
- ElasticSearch 套件介紹
- ElasticSearch 應用場景和案例
- 平台架構
下面開始今天的內容分享。
2.ElasticSearch 套件
2.1LogStash
LogStash是一個開源的、免費的日志收集工具,屬於Elastic家族的一員,負責將收集的日志信息輸送到ElasticSearch,為ElasticSearch提供數據源。
2.2ElasticSearch
ElasticSearch是一個開源的分布式搜索引擎,具備高可靠性,支持非常多的企業級搜索用例。像Solr4一樣,是基於Lucene構建的。支持時間索引和全文檢索。官網:https://www.elastic.co 它對外提供一系列基於Java和HTTP的API,用於索引、檢索、修改大多數配置。
2.3 Kibana
Kibana也是開源和免費的工具,同樣也是Elastic家族的一員,它可以幫助我們匯總、分析和搜索重要數據日志,並且提供友好的Web可視化界面。它可以為LogStash和ElasticSearch提供一個可視化的Web界面。
下面我們來看看ElasticSearch的應用場景和案例。
3.ElasticSearch 應用場景和案例
在面對實時海量數據查詢,實時搜索,全文搜索,ElasticSearch 都能夠很好的去勝任,它是基於 Lucene、RESTful、分布式、面向雲計算設計、實時搜索、全文搜索、穩定、高可靠、可擴展、安裝和使用方便。下面給大家介紹一些場景的案例。
- Github
這個開源的托管平台,對於我們開發者來說,並不陌生,我們基本每天都會去訪問Github,而Github使用ElasticSearch來實現搜索,運行在多個集群上。由於代碼搜索索引很大,Github專門指定一個集群。Github使用Elasticsearch搜索20TB的數據,包括13億的文件和1300億行的代碼。
- Mozilla
Mozilla公司因Firefox而聞名,它目前使用Elasticsearch將測試的結果以JSON的格式進行存儲,開發人員可以非常方便的查找BUG。
- Sony
Sony公司使用Elasticsearch作為信息搜索引擎,以提供對外界的查詢響應。
另外,還有很多企業也用到了ElasticSearch去作為一個分布式搜索引擎,這里就不一一列舉了。
4.平台架構
下面,我給大家用一個圖來說明日志監控平台的架構,如下圖所示:
通過上圖,我們可以清晰的看到日志平台整個流向過程,下面我給大家來解釋圖中的各個環節的含義。首先,多個獨立的Agent,這里就是圖左邊的三個LogStash節點,他們負責收集不同來源的數據,由一個Indexer負責進行匯總和分析數據,在這個當中有一個中間過程,這里我們使用了Broker,用Redis來實現這部分功能,其作用充當一個緩沖區,之后由ElasticSearch負責存儲和搜索數據,最后由前段的Kibana可視化我們收集的數據。
這里說明幾點需要注意的地方:
- 采用LogStash收集各種日志數據,其類型可以是:系統日志、文件、Redis、MQ等等。
- Broker作為遠程代理和中心代理的緩沖區,使用Redis進行實現,原因有二:其一,可以提高系統的性能;其二,可以提高系統的高可用性,當中心代理提取數據失敗時,數據保存在Redis中,可以規避數據丟失的風險。
- 中心代理使用LogStash,負責從Broker中獲取數據,可以執行相關的分析和處理,它提供有Filter功能。
- ElasticSearch用於存儲最終的數據,並對外提供搜索功能,基於Restful。
- Kibana提供一個簡單、豐富的Web View可視化界面,用於可視化ElasticSearch集群中的數據,支持各種查詢、統計和展示。
5.總結
這篇博客只是給大家入個門,讓大家通過一個日志監控平台的案例去熟悉ElasticSearch套件的使用,以及它的背景。后面我會專門用於一個ElasticSearch實戰系列,來給大家分析這部分內容,包括平台的搭建部署,到平台的實現這一整個流程,這篇文章大家能夠有個印象,熟悉各個套件的作用即可。
6.結束語
這篇博客就和大家分享到這里,如果大家在研究學習的過程當中有什么問題,可以加群進行討論或發送郵件給我,我會盡我所能為您解答,與君共勉!