這篇文章將會介紹如何在Ubuntu 22.04安裝ELK stack,ELK stack由三個開源軟體組成包含:Elasticsearch、Logstash、Kibana,其中Elasticsearch是核心,前端的處理資料以及後端的呈現圖表都可以自由替換不同工具。
Elasticsearch提供分散式、Json格式輸出的搜尋引擎。Logstash是解析log、資料正規化的工具。Kibana則能提供視覺化的圖表。三者合在一起就是一套免費開源的log處理方案!
首先安裝JAVA
$ sudo apt update
$ sudo apt install default-jre
$ sudo apt install openjdk-11-jdk
Install Elasticsearch
因為elasticsearch預設沒有在Ubuntu的apt庫裡面,所以需要手動加入,以下安裝8.3.3版
$ sudo -i
$ wget -qO - <https://artifacts.elastic.co/GPG-KEY-elasticsearch> | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
$ apt-get install apt-transport-https
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] <https://artifacts.elastic.co/packages/8.x/apt> stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
$ apt update
$ apt install elasticsearch=8.3.3
安裝完之後執行systemctl daemon-reload,如果想設定開機會自動開啟服務的話可以使用enable。
$ systemctl daemon-reload
$ systemctl start elasticsearch
$ systemctl status elasticsearch # 看狀態
$ systemctl enable elasticsearch # 設定下次開機可以自動開啟
再執行以下改elastic的密碼
$ /usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic
建成功後可以開瀏覽器輸入你的https://<yourip>:9200/,記得http要加s
我測試機的ip是192.168.149.145,所以就是https://192.168.149.145:9200/
日後要調整elasticsearch的設定可以到/etc/elasticsearch/elasticsearch.yml
Install Kibana
安裝只要一行
$ apt-get install kibana=8.3.3
Kibana預設使用localhost,所以如果你是使用虛擬機或是日後有遠端的需求,需要到kibana的設定檔修改
$ vim /etc/kibana/kibana.yml
# 最上方加上
server.host: "0.0.0.0"
跟Elasticsearch步驟一樣啟動
$ systemctl start kibana
$ systemctl status kibana
$ systemctl enable kibana
Kibana的port號是5601,可以使用此url進入(IP記得換成你自己的)http://192.168.149.145:5601/
進入Kibana的畫面後會看到需要設定的畫面,執行以下的指令取得Token並貼上
$ /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
執行後把得到的字串丟到Kibana上
再來會遇到需要要求verification code的畫面
執行以下指令,把得到的code輸入進Kibana
$ /usr/share/kibana/bin/kibana-verification-code
接著就可以登入了!
操作介面
可以修改Kibana密碼
$ /usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u kibana_system
Install Logstash
一行指令就可以安裝完!
$ apt-get install logstash=1:8.3.3-1
安裝完後再把Logstash開啟
$ systemctl start logstash
$ systemctl status logstash
$ systemctl enable logstash