1. 程式人生 > 實用技巧 >(1)ElasticSearch搭配Kibana在linux環境的部署

(1)ElasticSearch搭配Kibana在linux環境的部署

1.簡介

這個章節主要介紹ElasticSearch+Kibana兩個元件在linux環境的部署步驟,以及在部署過程中遇到問題解決,暫就不涉及叢集部署知識點,後面章節再詳細講解這塊。下面讓我們來簡單瞭解下Elasticsearch與Kibana。

1.1Elasticsearch簡介

Elasticsearch是一個基於Lucene的搜尋伺服器,也是一個是一個分散式、高擴充套件、高實時的搜尋與資料分析引擎。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放原始碼釋出,是一種流行的企業級搜尋引擎。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。
它能很方便的使大量資料具有搜尋、分析和探索的能力。充分利用Elasticsearch的水平伸縮性,能使資料在生產環境變得更有價值。Elasticsearch的實現原理主要分為以下幾個步驟,首先使用者將資料提交到Elasticsearch 資料庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一併存入資料,當用戶搜尋資料時候,再根據權重將結果排名,打分,再將返回結果呈現給使用者。
Elasticsearch+Logstash(資料收集日誌解析引擎)+Kibana(分析和視覺化平臺)這三個產品被設計成一個整合解決方案,稱為“Elastic Stack”(以前稱為“ELK stack”)。
Elasticsearch可以用於搜尋各種文件。它提供可擴充套件的搜尋,具有接近實時的搜尋,並支援多租戶。Elasticsearch是分散式的,這意味著索引可以被分成分片,每個分片可以有零個或多個副本。每個節點託管一個或多個分片,並充當協調器將操作委託給正確的分片。再平衡和路由是自動完成的。相關資料通常儲存在同一個索引中,該索引由一個或多個主分片和零個或多個複製分片組成。一旦建立了索引,就不能更改主分片的數量。

1.2Kibana簡介

Kibana是一個針對Elasticsearch而設計的開源分析及視覺化平臺,用來搜尋、檢視互動儲存在Elasticsearch索引中的資料。使用Kibana,可以通過各種圖表進行高階資料分析及展示。
Kibana讓海量資料更容易理解。它操作簡單,基於瀏覽器的使用者介面可以快速建立儀表板(dashboard)實時顯示Elasticsearch查詢動態。

2.前期準備

2.1下載elasticsearch元件

到官網下載頁https://www.elastic.co/cn/downloads/elasticsearch下載linux最新版本elasticsearch-7.8.0,如圖所示:

2.2下載kibana元件

到官網下載頁https://www.elastic.co/cn/downloads/kibana下載linux最新版本kibana-7.8.0,如圖所示:

2.3下載並安裝Xshell 6+Xftp 6

Xshell+Xftp下載安裝使用,這裡我就不多說了,度娘大把資料可以供大夥參考。下面簡要解釋下Xshell+Xftp用途:
Xshell是一個功能強大的安全終端模擬軟體,它支援SSH1, SSH2, 以及Microsoft Windows平臺的TELNET協議。Xshell可以在Windows介面下用來訪問遠端不同系統下的伺服器,從而達到遠端控制終端的目的。所以下面我都會使用Xshell在linux上編寫指令碼命令。
Xftp是一個功能強大的sftp、ftp檔案傳輸軟體。使用了Xftp以後,ms windows使用者能安全地在unix/linux和windows pc之間傳輸檔案。所以下面我都用Xftp做在linux和windows pc之間傳輸檔案。

3.Elasticsearch部署

3.1建立安裝包、Elasticsearch、kibana資料夾

在使用者目錄下建立安裝包、Elasticsearch、kibana這三個資料夾的目的是為了方便管理,預設目錄是/home/deng,建立資料夾命令如下:

//安裝包資料夾
mkdir /home/deng/installpackage
//elasticsearch資料夾
mkdir /home/deng/elasticsearch
//kibana資料夾
mkdir /home/deng/kibana

執行完所有命令後,通過Xftp,我們會看到/home/deng目錄下建立三個對應資料夾:

如果想刪除資料夾,具體命令如下:

//刪除資料夾
rm -rf /home/deng/installpackage

如果建立資料夾沒操作許可權,可以通過如下命令進行授權:

//修改檔案許可權
chmod -R 775 installpackage

再通過Xftp把之前下載好的elasticsearch-7.8.0-linux-x86_64.tar.gz、kibana-7.8.0-linux-x86_64.tar.gz安裝包傳輸到installpackage中:

3.2解壓Elasticsearch安裝包

先切換到elasticsearch資料夾目錄:

//切換elasticsearch資料夾
cd /home/deng/elasticsearch

把elasticsearch安裝包解壓到elasticsearch目錄當中:

//解壓elasticsearch安裝包
tar -zxvf /home/deng/installpackage/elasticsearch-7.8.0-linux-x86_64.tar.gz

3.3修改elasticsearch配置指定ES服務主機

先切換到elasticsearch資料夾config目錄:

//切換elasticsearch/config資料夾
cd /home/deng/elasticsearch/elasticsearch-7.8.0/config

使用vi文字編輯器修改elasticsearch.yml配置檔案:

//vi文字編輯器開啟elasticsearch.yml配置檔案
vi elasticsearch.yml

輸入修改命令:

//i修改
i

找到檔案中這兩項配置,把前面的#符號刪除開放出來並修改為如下內容:

network.host: 192.168.112.xxx
http.port: 9200

修改完這兩項配置之後,因為7.0以後版本還需要修改如下兩個配置才能啟動,所以找到這兩項進行修改,如果bootstrap.system_call_filter屬性沒有就新增一行:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

把上面四項配置修改後點選Esc按鈕退出編輯,輸入命令儲存退出:

//儲存退出
:wq

3.4啟動Elasticsearch服務

注意:ES啟動有可能會多次報錯,需要我們根據錯誤資訊重新修改下相關配置檔案。

3.4.1切換到bin目錄啟動Elasticsearch服務
//進入bin目錄
cd /home/deng/elasticsearch/elasticsearch-7.8.0/bin
//啟動Elasticsearch服務或者後臺啟動模式
./elasticsearch
or
./elasticsearch -d

當我們啟動Elasticsearch服務時候,可能會遇到如下錯誤提示。

3.4.2root使用者不能啟動Elasticsearch服務
//無法以root使用者身份執行elasticsearch服務。
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

根據上述錯誤提示,我們要建立一個使用者進行啟動Elasticsearch服務。而因為我安裝linux版本CentOS 7時候已經新建一個使用者deng,所以下面演示我就該使用者進行部署操作,如果你們在安裝過程中沒有新建,就使用以下命令新建一個使用者再啟動Elasticsearch服務:

//useradd 建立使用者賬號(預設在/home目錄下)
useradd deng
//passwd設定賬號的密碼
passwd 123456
3.4.3虛擬記憶體過低
//最大虛擬記憶體區域vm.max_map_count [65530]太低,至少增加到[262144]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

根據上述錯誤提示,我們需要修改下sysctl.conf系統配置檔案,但是如果當前使用者沒有root修改系統檔案許可權,那麼就得先su root使用者再進行如下操作:

vi /etc/sysctl.conf

輸入修改命令i,在空白處新增一行文字:

vm.max_map_count=262144

輸入:wq儲存退出後,再通過su deng切換回來,然後啟動Elasticsearch服務。

3.4.4elasticsearch程序的最大檔案描述符太低與管理員最大執行緒數太低
//elasticsearch程序的最大檔案描述符[4096]太低,請至少增加到[65535]
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
//使用者[admin]的最大執行緒數[3818]太低,請至少增加到[4096]
max number of threads [3818] for user [admin] is too low, increase to at least [4096]

根據上述錯誤提示,還是跟之前操作一樣,如果當前使用者沒有root修改系統檔案許可權,那麼就得先su root使用者再進行如下操作:

vi /etc/security/limits.conf

輸入修改命令i,在空白處新增四行文字:

* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096

輸入:wq儲存退出後,再通過su deng切換回來,然後啟動Elasticsearch服務。

3.4.5預設discovery設定不適合生產使用
//預設discovery設定不適合生產使用;至少有一個[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]必須配置
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

根據上述錯誤,輸入命令進行如下操作:

vi elasticsearch.yml

輸入修改命令i,找到檔案中這項配置,把前面的#符號刪除開放出來並修改為如下內容:

cluster.initial_master_nodes: ["node-1"]

輸入:wq儲存退出後啟動Elasticsearch服務。

3.4.6無法獲取節點鎖
//無法獲取節點鎖
java.lang.IllegalStateException: failed to obtain node locks

這個錯誤原因是因為系統已經存在elasticsearch程序了,找出這個程序,把它kill掉重新啟動就可以了,具體操作命令如下:

//檢視elasticsearch程序
ps -ef | grep elasticsearch
//kill程序ID,格式(kill -9 1111)
kill -9 xxxx

然後重新啟動Elasticsearch服務。

3.4.7Elasticsearch服務正常啟動

如果還不能訪問,把linux系統防火牆關閉,操作防火牆命令如下:

//檢視防火狀態
systemctl status firewalld
//暫時關閉防火牆
systemctl stop firewalld
//永久關閉防火牆
systemctl disable firewalld
//重啟防火牆
systemctl enable firewalld

成功訪問介面如下:

4.Kibana部署

因為之前已經建立好kibana資料夾,我們只需要把kibana安裝包解壓到對應資料夾中再啟動服務就好了。

4.1解壓Kibana安裝包

先切換到kibana資料夾目錄:

//切換kibana資料夾
cd /home/deng/kibana

把kibana安裝包解壓到kibana目錄當中:

//解壓kibana安裝包
tar -zxvf /home/deng/installpackage/kibana-7.8.0-linux-x86_64.tar.gz

4.2修改kibana配置指定kibana服務主機

先切換到kibana資料夾config目錄:

//切換kibana/config資料夾
cd /home/deng/kibana/kibana-7.8.0-linux-x86_64/config

使用vi文字編輯器修改kibana.yml配置檔案:

//vi文字編輯器開啟kibana.yml配置檔案
vi kibana.yml

找到檔案中這三項配置輸入i修改,把前面的#符號刪除開放出來並修改為如下內容:

server.port: 5601
server.host: "192.168.112.xxx"
elasticsearch.host: "http://192.168.112.xxx:9200"

如果需要修改為中文顯示:

i18n.locale: "zh-CN"

再切換到kibana資料夾bin目錄,啟動kibana服務:

//切換kibana/bin目錄
cd /home/deng/kibana/kibana-7.8.0-linux-x86_64/bin
//啟動kibana服務
./kibana

成功訪問介面如下:

5.Elasticsearch開啟登入驗證功能

先停止Elasticsearch服務,配置X-Pack開啟安全配置功能:

//配置X-Pack開啟安全配置功能
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

重啟Elasticsearch服務,執行設定使用者名稱和密碼的命令,為elastic、kibana、logstash_system、beats_system四個使用者分別設定密碼:

//切換elasticsearch/bin目錄
cd /home/deng/elasticsearch/elasticsearch-7.8.0/bin
//執行設定使用者名稱和密碼的命令,為4個使用者分別設定密碼:elastic、kibana、logstash_system、beats_system
./elasticsearch-setup-passwords interactive

如圖所示:

在瀏覽器上輸入Elasticsearch連結地址會看到如下介面:

輸入帳號elastic跟設定的密碼即可登入成功!
Elasticsearch設定使用者密碼後,還需要在Kibana上設定對應的帳號跟密碼,具體命令如下:

//切換kibana/config目錄
cd /home/deng/kibana/kibana-7.8.0-linux-x86_64/config
//設定Kibana登入帳號跟密碼
elasticsearch.username: "elastic"
elasticsearch.password: "xxx"

如圖所示:

然後開啟Kibana服務,在瀏覽器上輸入Kibana地址會看到如下介面:

輸入帳號elastic跟設定的密碼即可登入成功!

參考文獻:
Elasticsearch官網