ELK stack閱讀整理
1.ELK是什么
Logstash(收集)、Elasticsearch(存儲+搜索)、Kibana(展示),我們將這三個組合起來的技術(shù)稱之為ELK Stack,所以說ELK Stack指的是Elasticsearch(java)、Logstash(jruby)、Kibana技術(shù)棧的結(jié)合,一個通用的架構(gòu)如下圖所示:

ELK 前面主要靠Logstash來進行收集日志,Logstash將日志上傳到Broker上,后面還有一個Logstash用來讀取Broker中的日志,再將日志存儲到Elasticsearch里面,最后Kibana從Elasticsearch中查詢數(shù)據(jù)生成圖表進行展示。(在實際運用中,Logstash進程分為兩個不同的角色。運行在服務器上的盡量減輕運行壓力,只做讀取和轉(zhuǎn)發(fā),這個角色叫做Shipper;運行在獨立的服務器上的完成數(shù)據(jù)解析處理,負責寫入Elasticsearch的角色,叫Indexer。)
2.為什么用ELK
和傳統(tǒng)的日志處理方案相比,Elastic Stack具有如下優(yōu)點:
處理方式靈活:Elasticsearch是實時全文索引,不需要像storm那樣預先編程才能使用;
配置簡易上手:Elastisearch全部采用JSON接口,Logstash是RubyDSL設計,都是目前業(yè)界最通用的配置語法設計;
檢索性能高效:雖然每次查詢都是實時計算,但是優(yōu)秀的設計和實現(xiàn)基本可以 達到全天數(shù)據(jù)查詢的秒級響應;
集群線性擴展:不管是Elasticsearch 集群還是Logstash 集群都是可以線性擴展的;
前端操作炫麗:Kibana界面上,只需要點擊鼠標,就可以完成搜索、聚合功能,生成炫麗的儀表板。
3.如何使用ELK
3.1 Logstash
3.1.1 Logstash簡介
Logstash在架構(gòu)中起到的作用是從每臺服務器上的某個路徑中的文件中收集數(shù)據(jù),并且按照預先編寫好的過濾規(guī)則來過濾數(shù)據(jù),然后按照要求將日志傳輸?shù)紼S集群中.
3.1.2 Logstash工作流程

3.1.3 Logstash部署
Logstash根據(jù)logstash-example.conf配置文件對數(shù)據(jù)源進行數(shù)據(jù)讀取和清洗,并將清洗結(jié)果寫入指定的目標文件。
Logstash可以以命令行參數(shù)進行配置,也可以在logstash.yml等setting文件中進行設置。
3.1.4 Logstash知識結(jié)構(gòu)

3.2 Elasticsearch
3.2.1 Elasticsearch簡介
Elasticsearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當前流行的企業(yè)級搜索引擎。設計用于云計算中,能夠達到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。
3.2.2 Elasticsearch工作流程
?

新收到的數(shù)據(jù)會被寫入到內(nèi)存的 buffer 中,然后在一定的時間間隔后刷到磁盤中,成為一個新的 segment,然后另外使用一個 commit 文件來記錄所有的 segment,數(shù)據(jù)只有在成為 segment 之后才能被檢索。默認的從 buffer 到 segment 的時間間隔是 1 秒(可以調(diào)用/_refresh接口更改)。
采用Translog 保證數(shù)據(jù)從 buffer 到 segment 的一致性,通過定期保存到磁盤中來實現(xiàn)Translog 的一致性。對于不斷生成新的segment,ES 會在后臺把零散的 segment 做數(shù)據(jù)歸并,歸并完成后刪除小的 segment,從而減少 segment 的數(shù)量;也會采用不同的歸并策略,盡量讓每次新生成的 segment 本身就比較大。
3.2.3 Elasticsearch部署
為了提高Elasticsearch性能可以通過elasticsearch.yml文件修改配置參數(shù),也可以根據(jù)用戶系統(tǒng)配置降低配置參數(shù),如jvm.heapsize。
3.2.4 Elasticsearch知識結(jié)構(gòu)

3.3 Kibana
3.2.1 Kibana簡介
Kibana是一個開源的分析與可視化平臺??梢杂脕硭阉?、查看、交互存放在Elasticsearch索引里的數(shù)據(jù),并使用各種不同的圖表、表格、地圖等對數(shù)據(jù)進行分析和可視化。
Kibana3是一個使用Apache開源協(xié)議,基于瀏覽器的Elasticsearch分析和搜索的儀表板,整個項目基于HTML和Javascript寫的,不需要任何服務器端組件,一個純文本發(fā)布服務器即可。
Kibana4中Discover標簽頁可以提交搜索請求,過濾結(jié)果,然后檢查返回的文檔里的數(shù)據(jù),默認情況下,Discover顯示匹配搜索條件的500個文檔。Visualization 用來為搜索結(jié)果做可視化,每個可視化都是跟一個搜索關(guān)聯(lián)著的。Dashboard 創(chuàng)建、定制自己的儀表盤。任何需要展示的數(shù)據(jù)都需要現(xiàn)在 Settings 中進行索引配置,可以選擇配置時間索引,這樣在 Discover 頁面會多出來時間的選項。
3.2.2 Kibana部署
Kibana3中config.js核心配置的地方,文件包含的參數(shù)都是必須在初次運行Kibana之前提前設置好的。
Kibana4啟動,在安裝目錄運行:
$bin/kibana (Linux/Mac OS X)
$bin\kibana.bat (Windows)
配置可以通過命令行參數(shù)或配置文件kibana.yml。
3.2.3 Kibana知識結(jié)構(gòu)

參考書籍《ELK stack權(quán)威指南》http://www.itdecent.cn/p/666c662f0068
?