ELK 介紹與使用
作者/張乃中
前言
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