[DV] ELK 安裝及設定教學

本篇文章主要在 ubuntu 上安裝 ELK(Elasticsearch、logstash、Kibana),並設定其三個套件的串接設定。


ELK 介紹

ELK 主要由三個開源軟件所組成,用於收集日誌資料、檢索資料並將資料做視覺化呈現,三個軟件的介紹如下所示:

  • Logstash:提供了各式各樣的日誌收集及輸出的 Plugin,可用於串接資料庫或是日誌檔案,並將資料收集處理後,輸出至 Elasticsearch。
  • Elasticsearch:分散的索引搜尋系統,可用於全文檢索,並提供 REST API 串接,ES 也是 NoSQL 資料庫的一種,所有的資料都是以 JSON 的方式進行存取。與 MongoDB 一樣都是 Document DB,但最大的不同是所有欄位都可以建立索引進行全文搜尋。
  • Kibana:可透過網頁介面來呈現資料、製作圖表,或是透過開發工具更簡易的對 elasticsearch 執行資料操作。

ELK 安裝

前置準備作業

  1. 一台電腦用於 ssh 連線 ( 下方範例使用 macOS )
  2. Ubuntu 16.04 以上版本

Step 1. 安裝 Java 8

由於 Elasticsearch 由 Java 語言開發出來,因此第一步驟就先安裝 JAVA 8,安裝指令如下所示:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

Step 2. 安裝 Elasticsearch

安裝完 JAVA 後,就可以開始安裝 Elasticsearch,但請記住 Elasticsearch 和 Kibana 的版本必須要相同,只要有不同就會發生問題。

1.首先第一步先去下載 deb 安裝檔

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.3.deb

2.接著透過 dpkg 指令安裝 .deb 套件。

$ sudo dpkg -i elasticsearch-5.4.3.deb

3.重新啟動 Elasticsearch。

$ sudo service elasticsearch restart

服務啟動後會開啟 9200, 9300 兩個 port,9200 是 API WebService,9300 是在 Cluster 環境下讓節點之間傳遞資料的服務。

確認 Elasticsearch 的系統狀況。

$ curl http://localhost:9200/_cluster/health

如果透過 curl 指令打此 url 可以取得目前系統的狀況如下:

{"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

上述資訊最重要的就是 status,green 表示 Cluster 模式運作正常。yellow 表示資料完整,但是沒有另一份叢集設定檔存在,系統可以正常服務,由於目前我們只有安裝一台,所以「黃燈」是正常的。red 就表示系統異常了,在紅燈的情況下 API 是無法進行服務的,表示可能有節點掛了或者還沒上線,透過 shards 相關資訊可以得知詳細狀態。

Step 3. 安裝 Kibana 服務

Kibana 主要可以將 Elasticsearch 資料庫中的資料快速呈現視覺化報表,並提供 UI 介面對 Elasticsearch 做操作。安裝步驟如下所示:

1.下載 deb 安裝包。

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.3-amd64.deb

2.接著透過 dpkg 指令安裝 .deb 套件。

$ sudo dpkg -i kibana-5.4.3-amd64.deb

3.重新啟動 Kibana。

$ sudo service kibana restart

由於 Kibana 預設綁定在 127.0.0.1,因此如果想要透過外部 ip 連線至此服務,就需要更改 kibana 的 config 檔。

$ sudo vi /etc/kibana/kibana.yml

server.host: "5601"server.host: "0.0.0.0" 改成如此。 最後再重新啟動一次 kibana。

$ sudo service kibana restart

4.開啟網頁測試。

http://yourIP:5601  

出現此畫面代表成功。

Step 4. 安裝 Logstash 服務

Logstash 主要可以抓取 log 資訊或定期從 DB 中抓資料,並將此資料傳送至 Elasticsearch 儲存。安裝步驟如下所示:

1.下載壓縮檔。

$ wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.3.tar.gz

2.針對壓縮檔解壓縮。

$ tar zxf logstash-5.4.3.tar.gz

3.如需讓外部網路可以連線,可調整設定檔。

$ cd logstash-5.4.3/
$ vi config/logstash.yml

4.執行 Logstash,需要創建配置語法的檔案。
logstash.conf 再下一章節 ELK 串接設定所示。

$ bin/logstash -f config/logstash.conf

ELK 串接設定

上述步驟如果確認安裝完成,即可開始設定從 Logstash 接收資料,將資料送至 Elasticsearch 儲存,最後透過 Kibana 做呈現,流程如下圖所示:

Step 1. 設定 Logstash

在 logstash 提供的 input 可以設定資料需要從哪裡引入(例如:TCP port / DB 等),以利後續 filter 分別使用不同的規則進行切割,最後於 output 選擇要輸出的方式與位置。

首先我們會現在 config 資料夾中建立一個 logstash.conf,用於創建配置語法。

$ cd logstash-5.4.3/
$ vi config/logstash.conf

內容如下,主要是將 5200 port 產出的內容接收後,輸出至 Elasticsearch 儲存。

input {  
    tcp {
        port => 5000
    }
}

output {  
    elasticsearch {
        hosts => "localhost:9200"
    }
}

最後再重新啟動 Logstash 並將 logstash.conf 輸入。

$ bin/logstash -f config/logstash.conf

Step 2. 輸入測試資料

此步驟主要為模擬 5000 port 產生的 log 資料,藉由 Logstash 接受後傳送至 Elasticsearch,可以先編輯一個 test.txt 檔案,再透過下列指令來傳送一個至 5200 port。

$ nc 127.0.0.1 5000 < test.txt

Step 3. 前往 Kibana 網頁確認資料狀況

最後可以開啟 Kibana 網頁,確認資料是否有被打進 Elasticsearch 中。

http://yourIP:5601  

建立 index 欄位。 接著點選 Discover 即可查看剛剛 test.txt 的內容,如有資料代表串接成功,資料也儲存至 Elasticsearch 中。

系統環境版本資訊

  • Ubuntu 16.04
ALL RIGHTS RESERVED. COPYRIGHT © 2018. Designed and Coded by Makee.io