1. 程式人生 > >ELKstack 搭建日誌管理平臺

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通過該欄位來配置叢集

。當我們在一個節點上安裝一個ES之後,它預設叢集名字是elasticsearch,然後我們又去內網中另外一個節點安裝ES,它預設名字也是elasticsearch,你會發現,這兩個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由三部分組成:

配置完成後,需要重啟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…