(一)什麼是ELK Stack
ELK 到底是什麼呢? “ELK”是三個開源專案的首字母縮寫,這三個專案分別是:Elasticsearch、Logstash 和 Kibana。
- Elasticsearch 是一個搜尋和分析引擎;
- Logstash 是伺服器端資料處理管道,能夠同時從多個來源採集資料,轉換資料,然後將資料傳送到諸如 Elasticsearch 等“儲存庫”中;
- Kibana 則可以讓使用者在 Elasticsearch 中使用圖形和圖表對資料進行視覺化。
那什麼又是什麼是ELK Stack呢?在ELK社群發展壯大之後,又加入了一系列輕量型的單一功能資料採集器--Beats,所以Beats是一系列輕量型小工具。
圖1.Beats工具集合
在加入Beats工具之後呢,ELK 這個名稱又要變了,把它叫做 BELK?BLEK?ELKB?當時的確有過繼續沿用首字母縮寫的想法。然而,對於擴充套件速度如此之快的堆疊而言,一直採用首字母縮寫的確不是長久之計,就這樣,Elastic Stack 這個名字應運而生了。
所以目前的ELK Stack主要是包含了Elasticsearch 、Logstash、Kibana以及Beats,四個軟體形成了如下的架構:
圖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
或者也可以從有道雲筆記附件下載,連結: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。
問題記錄:
問題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等,後續會逐步展開,敬請期待。
【完】