第238期 / August 4, 2017

研發新視界

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

ELK 介紹與使用

作者/張乃中

[發表日期:2017/8/4]

前言

ELK是指ElasticSearch、Logstash和Kibana這三個open-source軟體的集合套件,這三個軟體可以組成一套日誌(log)分析和監控架構。

一、Elasticsearch:

一個基於Apache Lucene的分散式全文檢索引擎,支援RESTful接口,並可對數據進行即時分析。

二、Logstash:

用於管理log的工具軟體,可以進行log收集、過濾以及解析,並將資料輸出儲存。

三、Kibana:

一個前端Web套件,將ElasticSearch所儲存的log資料轉換成各式各樣的圖表,視覺化的呈現複雜數據。

簡單來說ELK stack的流程,是由 Logstash 收集與處理傳入 server 端的 log紀錄,再將log推送至 Elasticsearch 進行儲存,最後透過 Kibana 進行資料視覺化的呈現。


《圖一》


環境需求:
CentOS 7
JAVA 8

安裝與設定ElasticSearch

一、下載ElasticSearch並安裝

https://www.elastic.co/downloads/elasticsearch

二、設定ElasticSearch

ElasticSearch須設定記憶體的使用上限,有兩個原則:

1.不要超過系統記憶體50%,例如系統記憶體4G,則分配給ElasticSearch不要超過2G。

2.最大不要超過32G,開啟 /etc/elasticsearch/jvm.options 檔案,將Xms(下限), Xmx(上限) 設為合理數值,防火牆需開啟9200埠。


《圖二》


三、啟動ElasticSearch


《圖三》


安裝與設定Logstash

一、下載Logstash並安裝

https://www.elastic.co/downloads/logstash

二、設定Logstash

Logstash收到log資料後,會以pipelinet進行處理:輸入->過濾->輸出,而處理的模式及規則以grok這個語法在設定檔裡設定。


《圖四》


以上範例就是以stdin接受畫面上的輸入,不做任何過濾,將log傳到指定位址的elasticsearch server。

三、啟用設定檔


《圖五》


四、啟動Logstash


《圖六》


安裝與設定Kibana

一、下載Kibana

https://www.elastic.co/downloads/kibana

二、設定Kibana

開啟 /opt/kibana/config/kibana.yml 設定,找到下面參數


《圖七》


防火牆需開啟5601埠


《圖八》


三、啟動Kibana


《圖九》


用瀏覽器打開http://kibanahost:5601,開啟後須先設定一個Index pattern,作為Logstash的Index。


《圖十》


接著就能在Discover中查詢囉!

最後在我們想要蒐集log的server上安裝Beats,將log檔案傳送至Elasticsearch即可。Beats雖然也可傳送log,但並沒有分析處理,因此我們需要Logstash進行規則處理。Beats有許多種Packetbeat(網路封包), Filebeat(log檔案), Metricbeat(監控代理資訊)和 Winlogbeat(Windows事件),各自有不同的應用就不多介紹。

所以實際上ELK的架構圖如下:


《圖十一》


結語

以往架設一個系統時,通常會將log寫入檔案之中,一旦發生問題時,難以閱讀、查看的log檔案,時常是維運的一大問題;透過使用ELK,在不用改變系統原有架構的情況下,可簡化log的分析、查詢等工作,並視覺化的呈現log資料。

參考資料

https://www.elastic.co/guide/index.html
https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details