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