ELK6環境搭建

gegeman發表於2020-10-22

(一)什麼是ELK Stack

ELK 到底是什麼呢? “ELK”是三個開源專案的首字母縮寫,這三個專案分別是:Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch 是一個搜尋和分析引擎;
  • Logstash 是伺服器端資料處理管道,能夠同時從多個來源採集資料,轉換資料,然後將資料傳送到諸如 Elasticsearch 等“儲存庫”中;
  • Kibana 則可以讓使用者在 Elasticsearch 中使用圖形和圖表對資料進行視覺化。

那什麼又是什麼是ELK Stack呢?在ELK社群發展壯大之後,又加入了一系列輕量型的單一功能資料採集器--Beats,所以Beats是一系列輕量型小工具。

Snipaste_2020-10-21_21-22-54

                   圖1.Beats工具集合

在加入Beats工具之後呢,ELK 這個名稱又要變了,把它叫做 BELK?BLEK?ELKB?當時的確有過繼續沿用首字母縮寫的想法。然而,對於擴充套件速度如此之快的堆疊而言,一直採用首字母縮寫的確不是長久之計,就這樣,Elastic Stack 這個名字應運而生了。

所以目前的ELK Stack主要是包含了Elasticsearch 、Logstash、Kibana以及Beats,四個軟體形成了如下的架構:

Snipaste_2020-10-21_21-15-05

                    圖2.ELK Stack架構

接下來我們通過安裝ELK 6來了解ELK。

NOTE:本次安裝版本為ELK6.5.4,此時ELK最新版本已經是7.9.1,不過公司使用的是6.5.4,因此安裝較老的版本。


(二)基礎資訊

(2.1)作業系統資訊

[root@elk6 ~]# cat /etc/centos-release
 CentOS Linux release 7.4.1708 (Core)


(2.2)基礎軟體安裝包

elasticsearch-6.5.4
kibana-6.5.4-linux-x86_64
filebeat-6.5.4-linux-x86_64

安裝包下載,我把所有本文涉及到的安裝包都放在網盤裡面了:

連結:https://pan.baidu.com/s/1Dzhif5V9Rm1fgwauanf1qQ
提取碼:gege

Snipaste_2020-10-21_21-43-25

或者也可以從有道雲筆記附件下載,連結:http://note.youdao.com/noteshare?id=ab1426fe3c180a08ec540c36337616c5&sub=59BD56337C3D46B2B2F54F3FC2D44503


(2.3)安裝使用者及目錄建立

建立安裝使用者elk,使用者組elk

[root@elk6 ~]# groupadd elk
[root@elk6 ~]# useradd elk -g elk -p elk

建立安裝目錄/elk,後續會將elasticsearch、logstash、kibana安裝到該目錄。

[root@elk6 ~]# mkdir /elk
[root@elk6 ~]# chown -R elk:elk /elk

(三)安裝ELK元件

elk stack的安裝主要包括elasticsearch、kibana、logstash、filebeat等,elk還需依賴java。

(3.1)安裝Java

注意:使用root使用者進行安裝

elasticsearch的安裝至少需要java8,安裝方法如下:

STEP1:到Oracle官網下載java8,建議不要使用太新的,下載地址為:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

STEP2:安裝java

# 使用rpm包直接安裝
[root@elk6 ~]# rpm -ivh jdk-8u261-linux-x64.rpm 
warning: jdk-8u261-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_261-fcs        ################################# [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
 
 # 配置java的環境變數
[root@elk6 default]# vim /etc/profile
# 在rofile檔案末尾新增java的環境變數
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 使環境變數生效
[root@elk6 default]# source /etc/profile

STEP3:檢視安裝情況

[root@elk6 default]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

[root@elk6 default]# echo $JAVA_HOME
/usr/java/default


(3.2)安裝elasticsearch

注意:使用elk使用者進行安裝

STEP1:解壓elasticsearch安裝包到/elk目錄

[elk@elk6 ~]$ tar -xzvf elasticsearch-6.5.4.tar.gz -C /elk/

STEP2:檢視安裝包

[elk@elk6 ~]$ cd /elk/
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x. 8 elk elk 143 Dec 18  2018 elasticsearch-6.5.4

STEP3:啟動elasticsearch

[elk@elk6 bin]$ ./elasticsearch -d

STEP4:檢查是否啟動成功,如果出現如下資訊,則說明啟動成功

[elk@elk6 ~]$ curl 127.0.0.1:9200
{
  "name" : "tif-YiB",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "igsUakpeRse6-41h7aJbiw",
  "version" : {
    "number" : "6.5.4",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "d2ef93d",
    "build_date" : "2018-12-17T21:17:40.758843Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}


問題記錄:

問題1:只能使用127.0.0.1訪問elasticsearch,其它IP無法訪問。

需要修改配置檔案elasticsearch.yml,將其設定為不限制訪問的IP

[elk@elk6 config]$ pwd
/elk/elasticsearch-6.5.4/config
[elk@elk6 config]$ vim elasticsearch.yml 
network.host: 0.0.0.0

重啟後報錯:

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改Linux使用者資源引數

vim /etc/security/limits.conf
# 在最後面新增以下引數
* soft nofile 65536
* hard nofile 65536

修改核心控制引數

vim /etc/sysctl.conf
# 在最後面新增以下引數
vm.max_map_count=655360

使核心引數生效

sysctl -p

然後退出elk使用者,再次登入啟用新的引數即可正常啟動。

問題2:elk預設無法使用root使用者執行

如果以root執行,會出現無法啟動,後續再以elk使用者執行,也啟動不了,需要重新授權。

[root@elkserver ~]# cd /elk/
[root@elkserver elk]# ls -l
total 4
drwxr-xr-x.  5 elk elk   57 Nov 15 17:22 elasticsearch
drwxrwxr-x. 14 elk elk  271 Nov 15 22:09 kibana
drwxrwxr-x. 13 elk elk 4096 Nov 16 00:48 logstash
[root@elkserver elk]# chown -R elk:elk elasticsearch/


(3.3)安裝kibana

注意:使用elk使用者進行安裝

STEP1:解壓kibana安裝包到/elk目錄

[elk@elk6 ~]$ tar -xzvf kibana-6.5.4-linux-x86_64.tar.gz -C /elk/

STEP2:檢視安裝包

[elk@elk6 ~]$ cd /elk/
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x.  9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4
drwxrwxr-x. 11 elk elk 212 Dec 18  2018 kibana-6.5.4-linux-x86_64

STEP3:啟動kibana

[elk@elk6 elk]$ cd kibana-6.5.4-linux-x86_64/bin/
[elk@elk6 bin]$ ls
kibana  kibana-keystore  kibana-plugin
[elk@elk6 bin]$ ./kibana

STEP4:登入kibana

使用瀏覽器登入kibana:http://192.168.10.100:5601

clipboard


問題記錄:

問題1:kibana啟動後,無法使用外部的網頁進行訪問。在伺服器上執行如下命令,也未返回任何資訊

[elk@elk6 config]$ curl http://localhost:5601
[elk@elk6 config]$

解決方法:修改kibana的配置檔案,不限制訪問kibana的主機

[elk@elk6 config]$ pwd
/elk/kibana-6.5.4-linux-x86_64/config
[elk@elk6 config]$ vim kibana.yml 
# 修改server.host為不限制訪問
server.host: "0.0.0.0"


(3.4)安裝logstash

注意:使用elk使用者進行安裝

logstash依賴於java,我們已經在前面安裝過java了,這裡可以忽略。如果是在單獨的機器上安裝logstash,那麼需要先安裝java。

STEP1:解壓logstash安裝包到/elk目錄

[elk@elk6 ~]$ tar -xzvf logstash-6.5.4.tar.gz -C /elk/

STEP2:檢視安裝包

[elk@elk6 /]$ cd /elk
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x.  9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4
drwxrwxr-x. 11 elk elk 212 Dec 18  2018 kibana-6.5.4-linux-x86_64
drwxrwxr-x. 12 elk elk 255 Oct 14 16:10 logstash-6.5.4

STEP3:啟動logstash

[elk@elk6 bin]$ pwd
/elk/logstash-6.5.4/bin
啟動方式為./logstash -f 配置檔案


(3.5)安裝filebeat

注意:使用root使用者進行安裝

STEP1:filebeat一般都是安裝在需要進行檔案採集的伺服器上,這裡用另一臺伺服器來安裝filebeat

[root@filebeatserver ~]# tar -xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /elk/

STEP2:檢視解壓後的檔案

[root@filebeatserver filebeat-6.5.4-linux-x86_64]# pwd
/elk/filebeat-6.5.4-linux-x86_64
[root@filebeatserver filebeat-6.5.4-linux-x86_64]# ll
total 35452
-rw-r--r--.  1 root root   100372 Dec 18  2018 fields.yml
-rwxr-xr-x.  1 root root 35930715 Dec 18  2018 filebeat
-rw-r--r--.  1 root root    68183 Dec 18  2018 filebeat.reference.yml
-rw-------.  1 root root     7610 Dec 18  2018 filebeat.yml
drwxr-xr-x.  4 root root       24 Dec 18  2018 kibana
-rw-r--r--.  1 root root    13675 Dec 18  2018 LICENSE.txt
drwxr-xr-x. 20 root root      271 Dec 18  2018 module
drwxr-xr-x.  2 root root     4096 Dec 18  2018 modules.d
-rw-r--r--.  1 root root   163067 Dec 18  2018 NOTICE.txt
-rw-r--r--.  1 root root      802 Dec 18  2018 README.md

STEP3:啟動filebeat

[root@filebeatserver filebeat-6.5.4-linux-x86_64]# ./filebeat


到此ELK Stack的所有元件已經安裝完畢,需要說明的是,ELK的安裝相對簡單,但是配置卻十分複雜,本文並沒有將如何配置beats、logstash等,後續會逐步展開,敬請期待。



【完】