ELK安裝及設定教學
ELK 介紹 ELK 主要由三個開源軟件所組成,用於收集日誌資料、檢索資料並將資料做視覺化呈現,三個軟體的介紹如下所示:
Logstash:提供了各式各樣的日誌收集及輸出的 Plugin,可用於串接資料庫或是日誌檔案,並將資料收集處理後,輸出至 Elasticsearch。 Elasticsearch:分散的索引搜尋系統,可用於全文檢索,並提供 REST API 串接,ES 也是 NoSQL 資料庫的一種,所有的資料都是以 JSON 的方式進行存取。與 MongoDB 一樣都是 Document DB,但最大的不同是所有欄位都可以建立索引進行全文搜尋。 Kibana:可透過網頁介面來呈現資料、製作圖表,或是透過開發工具更簡易的對 elasticsearch 執行資料操作。
ELK 安裝
前置準備作業
- 一台電腦用於 ssh 連線 ( 下方範例使用 Ubuntu )
- 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 的版本必須要相同,只要有不同就會發生問題。
- 首先第一步先去下載 deb 安裝檔
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.3.deb
※此為6.5.3版本 有最新版 請抓最新版
- 接著透過 dpkg 指令安裝 .deb 套件。
$ sudo dpkg -i elasticsearch-6.5.3.deb
- 重新啟動 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":"green","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}a
上述資訊最重要的就是 status,green 表示 Cluster 模式運作正常。yellow 表示資料完整,但是沒有另一份叢集設定檔存在,系統可以正常服務,由於目前我們只有安裝一台,所以「黃燈」是正常的。red 就表示系統異常了,在紅燈的情況下 API 是無法進行服務的,表示可能有節點掛了或者還沒上線,透過 shards 相關資訊可以得知詳細狀態。
Step 3. 安裝 Kibana 服務
Kibana 主要可以將 Elasticsearch 資料庫中的資料快速呈現視覺化報表,並提供 UI 介面對 Elasticsearch 做操作。安裝步驟如下所示:
- 下載 deb 安裝包。
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.3-amd64.deb
※此為6.5.3版本 有最新版 請抓最新版
- 接著透過 dpkg 指令安裝 .deb 套件。
$ sudo dpkg -i kibana-5.4.3-amd64.deb
- 重新啟動 Kibana。
$ sudo service kibana restart
由於 Kibana 預設綁定在 127.0.0.1,因此如果想要透過外部 ip 連線至此服務,就需要更改 kibana 的 config 檔。
$ sudo vi /etc/kibana/kibana.yml
將 server.host: 註解拿掉 並且改成 server.host: “0.0.0.0”
最後再重新啟動一次 kibana
$ sudo service kibana restart
- 開啟網頁測試。
http://127.0.0.1:5601
出現此畫面代表成功。
Step 4. 安裝 Logstash 服務
Logstash 主要可以抓取 log 資訊或定期從 DB 中抓資料,並將此資料傳送至 Elasticsearch 儲存。安裝步驟如下所示:
- 下載 deb 安裝包。。
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.3.deb
※此為6.5.3版本 有最新版 請抓最新版
- 接著透過 dpkg 指令安裝 .deb 套件。
$ sudo dpkg -i logstash-6.5.3.deb
- 如需讓外部網路可以連線,可調整設定檔。
$ cd logstash-6.5.3/
$ vi config/logstash.yml
- 執行 Logstash,需要創建配置語法的檔案。
$ 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-6.5.3/ $ vim config/logstash.conf
內容如下,主要是將 3099 port 產出的內容接收後,輸出至 Elasticsearch 儲存。
input {
tcp {
port => 3099
}
}
output {
elasticsearch {
hosts => "localhost:9200"
}
}
最後再重新啟動 Logstash 並將 logstash.conf 輸入。
$ bin/logstash -f config/logstash.conf
Step 3. 前往 Kibana 網頁確認資料狀況
最後可以開啟 Kibana 網頁,確認 Management -> Index patterns 內 有無新增的規則
http://yourIP:5601
default
http://127.0.0.1:5601
參考來源 https://oranwind.org/dv-elk-an-zhuang-ji-she-ding-jiao-xue/