什麼是ELK

ELK其實不是一個software (「・ω・)「
ELK是由elastic這間公司所開發的三個software(Elastic search、Logstash、Kibana)
這間公司還有做其他的software,像是Beats、APM之類的,有興趣的可以再去研究
那我們來介紹今天的三個主角吧~

Elastic Search

簡稱ES(不是ECMAScript喔),他是一個可以做平行處理的Search Engine,Elastic Search可以將很多Server節點(Node)加入叢集(Cluster),以進行平行運算。
IT狗有比較生動的介紹,可以比較MySQL與ES的差異。

Logstash

Logstash可以將各方不同的Log資訊進行整理過濾轉換後,再依照需要儲存在指定的地方。
Logstash會經過三個步驟(Inputs、Filters、Outputs),將不同種類協定傳來的資料進行整理轉送,再經由其他程式進行儲存、修改等後續動作。
例如你做的專案需要整合各種設備或者程式的Log並且可以搜索,你就可以使用Logstash轉換成統一格式後,以不同設備類型做標記,存放到Elastic Search,不需要自己寫一套轉換器,算是相當方便呢~
Logstash pipeline

出自某篇教學文章

Kibana

Kibana(不是Hibana喔)是一個讓使用者方便查詢及觀看資料的前端服務,也可以做一些Machine Learning,跟PHPMySQL很像,但是功能多了許多。
Kibana Panel


ELK分工大致如下:
各種不同格式的Log資料→Logstash整理轉換過濾→ES做存取及查詢→Kibana做為ES的UI,方便使用者操作資料查詢。

環境安裝

接下來我們來實作架設ELK環境吧,這三個程式都可以分開在不同伺服器執行,但因為小的我電腦設備沒那麼好QQ(希望有人能抖內我幾條Ram阿),因此接下來應該都會在同一台主機運行。
這次實驗我用的linux版本是Ubuntu 18.04.4-desktop-amd64請先下載安裝好喔 (ゝ∀・)b

安裝之前...

安裝之前我們有兩件事要做

1. Java

由於ELK需要用到Java,因此我們要先安裝Java

sudo apt-get install openjdk-8-jdk

我們可以用java --version來檢查Java是否安裝成功

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

如果你不需要用到OM2M,可以選擇openjdk-11-jdk

2. elastic的repository

elastic系列的產品並沒有在 apt 的安裝清單中,因此我們需要加入他們的repository

  1. 加入elastic的GPG key
    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
  2. 將elastic加入apt的sources list
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
    
  3. 更新apt
    sudo apt-get update
    
    這樣我們就將elastic加入apt中了,是不是很簡單呢(๑•̀ㅂ•́)و✧

開始安裝

前置作業搞定了,現在終於可以開始建置ELK了( • ̀ω•́ )

Elastic Search

sudo apt-get install elasticsearch
sudo systemctl start elasticsearch.service

Logstash

sudo apt-get install logstash
sudo systemctl start logstash.service

Kibana

sudo apt-get install kibana
sudo systemctl start kibana.service

什麼? 這樣就裝好了??? (((゚Д゚;)))
對 就是這麼簡單 σ`∀´)σ
這時候你可以打開瀏覽器開啟連結http://localhost:5601
如果有東西出現代表Kibana正常啟動

接下來你可以瀏覽http://localhost:9200
如果有東西出現代表ES正常啟動
ES web
Logstash需要一些東西才會運作

設定

安裝好了接下來是將三個服務串起來,ES跟Kibana預設值就是串起來的,因此我們只需要將ES與Logstash串起來就會動了。
Server預設使用的Port,可以對照著看

在Elastic Search還沒有資料時,在Kibana的Discover會看到這個畫面

我們可以用Logstash簡單的塞一些資料進去,這時就要設定一下Logstash了
設定Logstash也很簡單,在/etc/logstash有一個檔案logstash-sample.conf
將他複製一份到/etc/logstash/conf.d/logstash.conf,設定檔檔名只要是*.conf就可以了

cp /etc/logstash/logstash-sample.conf /etc/logstash/conf.d/logstash.conf

接下來修改一下內容

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  tcp {  #使用TCP協定
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #這行是beats用的 註解掉目前用不到
    #user => "elastic"
    #password => "changeme"
  }
}

然後重啟logstash

sudo systemctl restart logstash.service

logstash的測試設定就完成了
我們可以下這個指令

echo "test" | nc localhost 5044

5044是Logstash我們設定監聽的Port
如果他是停在那裏沒換行就是成功了
如果他直接換行了可能需要用systemctl status logstash.service檢查一下Logstash有沒有正常啟動

如果成功了,你開啟http://localhost:9200/_cat/indices可以找到logstash開頭index

你重整Kibana的Discover就會看到以下畫面

這時在Index pattern輸入logstash-*他會用正規表達是選取logstash-開頭的index,點選Next step

選擇以@timestamp這個欄位作為時間過濾的欄位

然後點選create index parttern就可以新增這個index的查詢了
這時後你就可以看到剛剛新增的log了

最基礎的ELK架設終於做完了,是不是很簡單呢(ゝ∀・)b

.article-content h1, .article-content h2, .article-content h3, .article-content h4, .article-content h5, .article-content h6 { margin-block-start: 0.5em; margin-block-end: 0.5em; }
#Elastic Search #ELK #Kibana #Logstash #IoT #Search Engine







你可能感興趣的文章

How to Set Up Firewall with UFW on Ubuntu 20.04

How to Set Up Firewall with UFW on Ubuntu 20.04

Day 144

Day 144

PHP、MySQL 語法基礎

PHP、MySQL 語法基礎






留言討論