ELK stack權威指南知識結構整理閱讀筆記
ELK stack閱讀整理
1.ELK是什麼
Logstash(收集)、Elasticsearch(儲存+搜尋)、Kibana(展示),我們將這三個組合起來的技術稱之為ELK Stack,所以說ELK Stack指的是Elasticsearch(java)、Logstash(jruby)、Kibana技術棧的結合,一個通用的架構如下圖所示:
ELK 前面主要靠Logstash來進行收集日誌,Logstash將日誌上傳到Broker上,後面還有一個Logstash用來讀取Broker中的日誌,再將日誌儲存到Elasticsearch裡面,最後Kibana從Elasticsearch中查詢資料生成圖表進行展示。(在實際運用中,Logstash程序分為兩個不同的角色。執行在伺服器上的儘量減輕執行壓力,只做讀取和轉發,這個角色叫做Shipper;執行在獨立的伺服器上的完成資料解析處理,負責寫入Elasticsearch的角色,叫Indexer。)
2.為什麼用ELK
和傳統的日誌處理方案相比,Elastic Stack具有如下優點:
處理方式靈活:Elasticsearch是實時全文索引,不需要像storm那樣預先程式設計才能使用;
配置簡易上手:Elastisearch全部採用JSON介面,Logstash是RubyDSL設計,都是目前業界最通用的配置語法設計;
檢索效能高效:雖然每次查詢都是實時計算,但是優秀的設計和實現基本可以 達到全天資料查詢的秒級響應;
叢集線性擴充套件:不管是Elasticsearch 叢集還是Logstash 叢集都是可以線性擴充套件的;
前端操作炫麗:Kibana介面上,只需要點選滑鼠,就可以完成搜尋、聚合功能,生成炫麗的儀表板。
3.如何使用ELK
3.1 Logstash
3.1.1 Logstash簡介
Logstash在架構中起到的作用是從每臺伺服器上的某個路徑中的檔案中收集資料,並且按照預先編寫好的過濾規則來過濾資料,然後按照要求將日誌傳輸到ES叢集中.
3.1.2 Logstash工作流程
3.1.3 Logstash部署
Logstash根據logstash-example.conf配置檔案對資料來源進行資料讀取和清洗,並將清洗結果寫入指定的目標檔案。
Logstash可以以命令列引數進行配置,也可以在logstash.yml等setting檔案中進行設定。
3.1.4 Logstash知識結構
3.2 Elasticsearch
3.2.1 Elasticsearch簡介
Elasticsearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
3.2.2 Elasticsearch工作流程
新收到的資料會被寫入到記憶體的 buffer 中,然後在一定的時間間隔後刷到磁碟中,成為一個新的 segment,然後另外使用一個 commit 檔案來記錄所有的 segment,資料只有在成為 segment 之後才能被檢索。預設的從 buffer 到 segment 的時間間隔是 1 秒(可以呼叫/_refresh介面更改)。
採用Translog 保證資料從 buffer 到 segment 的一致性,通過定期儲存到磁碟中來實現Translog 的一致性。對於不斷生成新的segment,ES 會在後臺把零散的 segment 做資料歸併,歸併完成後刪除小的 segment,從而減少 segment 的數量;也會採用不同的歸併策略,儘量讓每次新生成的 segment 本身就比較大。
3.2.3 Elasticsearch部署
為了提高Elasticsearch效能可以通過elasticsearch.yml檔案修改配置引數,也可以根據使用者系統配置降低配置引數,如jvm.heapsize。
3.2.4 Elasticsearch知識結構
3.3 Kibana
3.2.1 Kibana簡介
Kibana是一個開源的分析與視覺化平臺。可以用來搜尋、檢視、互動存放在Elasticsearch索引裡的資料,並使用各種不同的圖表、表格、地圖等對資料進行分析和視覺化。
Kibana3是一個使用Apache開源協議,基於瀏覽器的Elasticsearch分析和搜尋的儀表板,整個專案基於HTML和Javascript寫的,不需要任何伺服器端元件,一個純文字釋出伺服器即可。
Kibana4中Discover標籤頁可以提交搜尋請求,過濾結果,然後檢查返回的文件裡的資料,預設情況下,Discover顯示匹配搜尋條件的500個文件。Visualization 用來為搜尋結果做視覺化,每個視覺化都是跟一個搜尋關聯著的。Dashboard 建立、定製自己的儀表盤。任何需要展示的資料都需要現在 Settings 中進行索引配置,可以選擇配置時間索引,這樣在 Discover 頁面會多出來時間的選項。
3.2.2 Kibana部署
Kibana3中config.js核心配置的地方,檔案包含的引數都是必須在初次執行Kibana之前提前設定好的。
Kibana4啟動,在安裝目錄執行:
$bin/kibana (Linux/Mac OS X)
$bin\kibana.bat (Windows)
配置可以通過命令列引數或配置檔案kibana.yml。
3.2.3 Kibana知識結構