ELKstack 搭建日誌管理平臺
ELKstack 是 Elasticsearch、Logstash、Kibana 三個開源軟體的組合。在實時資料檢索和分析場合,三者通常是配合共用,而且又都先後歸於 Elastic.co 公司名下,故有此簡稱。
ELKstack 具有如下幾個優點:
- 處理方式靈活。Elasticsearch 是實時全文索引,不需要像 storm 那樣預先程式設計才能使用;
- 配置簡易上手。Elasticsearch 全部採用 JSON 介面,Logstash 是 Ruby DSL 設計,是目前最通用的配置語法設計;
- 檢索效能高效。雖然每次查詢都是實時計算,但是優秀的設計和實現基本可以達到百億級資料查詢的秒級響應;
- 叢集線性擴充套件。不管是 Elasticsearch 叢集還是 Logstash 叢集都是可以線性擴充套件的;
- 前端操作炫麗。Kibana 介面上,只需要點選滑鼠,就可以完成搜尋、聚合功能,生成炫麗的儀表板。
[Elasticsearch]
Elasticsearch是一個分散式實時搜尋分析引擎,其搜尋引擎基於Lucene。 ES官網再三強調自己不僅僅是一個Lucence,再Lucence之上還可以做到:
- A distributed real-time document store where every field is indexed and searchable
- A distributed search engine with real-time analytics
- Capable of scaling to hundreds of servers and petabytes of structured and unstructured data
【ES安裝】
最新版本ES是2.0.0 官方下載連結 下載deb包安裝
在此之前,因為ES依賴java,所以我們需要先安裝1.7以上版本的jre。
【ES配置】
關於ES的配置都在這個目錄下,我們主要配置elasticsearch.yml
配置檔案註釋非常的詳細,主要是配置叢集資訊、節點資訊、索引、網路等引數。這裡圖中紅色箭頭標識出的欄位值得注意一下
cluster.name : ES通過該欄位來配置叢集
node.name : 該欄位是該節點名字。
ES http預設監聽埠 9200, tcp預設監聽埠是9300
【ES API】
這裡介紹一些簡單的API,目的是為了驗證我們安裝成功以及驗證後面的例子。
curl 'http://localhost:9200/?pretty'
ES基本資訊,可以判斷我們ES叢集執行正常。
curl 'localhost:9200/_cat/health?v'
檢視節點狀態
這裡我們關注的欄位是 status
status一共有3個取值 : red (掛了),yellow(有一些問題,但不要緊)、green(完全正常)
通常yellow是因為儲存未完全同步,問題不大。
curl 'localhost:9200/_cat/indices?v'
檢視索引
ES提供更多的API載入一個doc,建立索引,搜尋等功能。在這裡我們主要介紹如何搭建一個日誌管理平臺,因此後續API不一一做介紹。更多API詳見 這裡。
[Logstash]
Logstash是一個基於java開源的資料收集引擎。
【Logstash安裝】
Logstash依賴java,需要安裝jre1.7以上版本.
最新版本Logstash是2.0.0 官方下載連結
與ES一樣,下載deb包安裝。
【Logstash配置】
我們主要配置的是
/etc/logstash/con.d/logstash.conf
一個標準的conf由三部分組成:
- 1.input 資料來源,這裡是抓nova-scheduler的日誌資訊。 input支援的外掛
- 2.filter 用來配置過濾資訊,可以沒有。 filter支援的外掛
- 3.output 資料去向,這裡是將資料傳遞給elasticsearch。 output支援的外掛
配置完成後,需要重啟logstash服務。
[kibana]
kibana作為ES視覺化web平臺而設計。在早期,logstash自帶web叫做 logstash-web用於檢視ES中的資料,然而功能過於簡單,於是後期又開發了Kibana。第一個Kibana用php語言釋出,隨後又用ruby重寫,釋出了Kibana2,再之後又有了angularjs版本的Kibana3.最後由ES公司重構出Kibana4。由於Kibana3和Kibana4的側重點不一樣,因此3和4在並存使用。
本文使用的是Kibana4
【Kibana安裝】
最新版本Kibana4.2.0 官方下載連結
【Kibana配置】
通常我們配置 /kibana/config/kibana.yml 檔案
簡單的配置就是圖中紅色箭頭標註內容,Kibana監聽的地址和埠,還有ES的地址。
[Kibana執行]
/kibana/bin/kibana 或者丟到nginx執行。
Kibana將日誌資訊一條一條的展示出來。
也可以通過Visualization模組用圖表方式展現統計資料:
至此我們通過ELKstack撈出了nova-scheduler的日誌資訊。這只是簡單的一個部署配置介紹,如果要在生產環境使用,還需要考慮更多的因素。ES和logstash會消耗大量的cpu和記憶體,在配置時需要考慮效能調優,logstash在傳輸日誌基於http,需要考慮其網路頻寬消耗情況。萬一我們監控的服務異常,日誌瘋狂輸出,會帶動logstash消耗大量資源和網路頻寬,最終導致宿主機宕機。
so…
To be continue…