1. 程式人生 > 其它 >Elasticsearch詳解及部署 JDK的安裝配置(Windows、Linux)Kibana使用說明ELK與EFK部署

Elasticsearch詳解及部署 JDK的安裝配置(Windows、Linux)Kibana使用說明ELK與EFK部署

Elasticsearch介紹

Elasticsearch簡稱ES,是一個基於Lucene的搜尋伺服器。它提供了一個分散式、高擴充套件、高實時的搜尋與資料分析引擎,基於RESTful web介面,它能很方便的使大量資料具有搜尋、分析和探索的能力

Elasticsearch的實現原理主要分為以下幾個步驟,首先使用者將資料提交到Elasticsearch 資料庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一併存入資料,當用戶搜尋資料時候,再根據權重將結果排名,打分,再將返回結果呈現給使用者。

應用場景

- 全文搜尋

Elasticsearch提供了全文搜尋的功能,適用於電商商品搜尋、App搜尋、企業內部資訊搜尋、IT系統搜尋等。

打個比方,在我們資料庫做模糊查詢時,如LIKE語句,它會遍歷整張表,同時進行字串匹配,這時候如果我們的表資料很多時,響應速度可想而知,所以這時候我們就可以引入ES。將資料庫與我們ES資料同步,通過ES來完成我們的大資料檢索,提高我們的查詢效率。

- 日誌分析

複雜的業務場景通常會產生繁雜多樣的日誌,如Apache Log、System Log、MySQL Log等,往往很難從繁雜的日誌中獲取價值,卻要承擔其儲存的成本。Elasticsearch能夠藉助Beats、Logstash等快速對接各種常見的資料來源,並通過整合的Kibana高效地完成日誌的視覺化分析,讓日誌產生價值。


接下來,我會對ES及ES的一些相關外掛進行部署

Elasticsearch部署

該部署以Centos7為例

#這裡我只使用了一臺裝置(192.168.111.129)來進行實驗

安裝前提:需先配置好1.8+的JAVA環境,可參考JDK的安裝配置(Windows、Linux)

ElasticSearch下載地址: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D

1.關閉防火牆和SELinux

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0               

vi /etc/selinux/config

SELINUX=enforcing改為SELINUX=disabled

2.解壓安裝包

tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/

3.配置ES配置檔案

cd /usr/local/elasticsearch-7.6.1/config/

vi elasticsearch.ym

#將以下注釋去除並修改
#配置es的叢集名稱
cluster.name: my-es
#節點名稱
node.name: node-1
#設定索引資料的儲存路徑
path.data: /usr/local/elasticsearch-7.6.1/data
#設定日誌的儲存路徑
path.logs: /usr/local/elasticsearch-7.6.1/logs
#設定當前的ip地址,通過指定相同網段的其他節點會加入該叢集中
network.host: 0.0.0.0
#設定對外服務的http埠
http.port: 9200
#新增以下設定,設定叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點(叢集內的所有ES IP及埠)
discovery.zen.ping.unicast.hosts: ["127.0.0.1","192.168.111.129:9200"]
Cluster.initial_master_nodes: ["node-1"]

4.建立ES相關配置檔案  

mkdir -p /usr/local/elasticsearch-7.6.1/data
mkdir -p /usr/local/elasticsearch-7.6.1/logs

5.建立ES使用者並授權

因為安全問題elasticsearch 不讓用root使用者直接執行,所以要建立新使用者

useradd es

echo "123" |passwd --stdin es

chown -R es:es /usr/local/elasticsearch-7.6.1/

6.配置資源使用

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 65535 End of file

7.配置虛擬記憶體大小

vi /etc/sysctl.conf 

#新增下面配置
vm.max_map_count=655360

sysctl -p

8.啟動ES

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

檢視日誌(因為是nohup啟動的,bin下面也會有一個nohup.out記錄日誌)

cd /usr/local/elasticsearch-7.6.1/logs

tail -f my-es.log

9.訪問ES web頁面

訪問IP:9200即可

Elasticsearch-head安裝

elasticsearch-head將是一款專門針對於elasticsearch的客戶端工具。elasticsearch-head是用於監控Elasticsearch狀態的客戶端外掛,包括資料視覺化、執行增刪改查操作等。

由於head外掛本質上還是一個nodejs的工程,因此需要安裝node,使用npm來安裝依賴的包。

nodejs下載地址:https://nodejs.org/en/download/

ElasticSearch-head下載地址:https://github.com/mobz/elasticsearch-head

1.解壓nodejs安裝包

tar -xf node-v14.18.0-linux-x64.tar.xz -C /usr/local/

2.配置nodejs的環境變數

vi /etc/profile

export NODE_HOME=/usr/local/node-v14.18.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile

node -v

v14.18.0

npm -v

6.14.15

3.建立軟連線

ln -s /usr/local/node-v14.18.0-linux-x64/bin/npm  /usr/local/bin/

ln -s /usr/local/node-v14.18.0-linux-x64/bin/node  /usr/local/bin/

4.安裝cnpm命令

npm install -g cnpm --registry=https://registry.npm.taobao.org

5.解壓ElasticSearch-head安裝包並授權

unzip elasticsearch-head-master.zip -d /usr/local/

cd /usr/local/elasticsearch-head-master/

cnpm install

chown -R es:es /usr/local/elasticsearch-head-master/

6.修改ElasticSearch-head配置檔案

vim Gruntfile.js

#找到connect,然後在true後面加逗號,然後換行新增hostname: '*' (注意,冒號後面有空格)

vim _site/app.js

#可以通過/app.App = ui進行查詢,將localhost修改為ES的IP地址

7.修改ElasticSearch配置檔案

cd /usr/local/elasticsearch-7.6.1/config/

vim elasticsearch.yml

#新增如下引數,啟用CORS,這裡注意後面不允許出現空格
http.cors.enabled: true  
http.cors.allow-origin: "*"

8.重啟ES並啟動head

可以先通過Kill命令殺掉ES程序

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

cd /usr/local/elasticsearch-head-master/

nohup npm start &

檢視日誌

tail -f nohup.out

檢視程序

ps -ef|grep grunt
es         4946   4934  0 4月05 pts/0   00:00:02 grunt

9.訪問ElasticSearch-head web頁面

訪問IP:9100即可

可參考elasticsearch-head頁面說明及使用繼續瞭解

Kibana安裝

Kibana下載地址:https://mirrors.huaweicloud.com/kibana/?C=N&O=D

1.解壓安裝包

tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz -C /usr/local/

2.配置Kibana配置檔案

cd /usr/local/kibana-7.6.1-linux-x86_64/config/

vim kibana.yml

#server.port: 5601
#本機IP地址
server.host: "192.168.111.129"
#ES的埠及地址
elasticsearch.hosts: ["http://192.168.111.129:9200"]
elasticsearch.requestTimeout: 90000
#中文化
i18n.locale: "zh-CN"

3.授權及啟動Kibana

chown -R es:es /usr/local/kibana-7.6.1-linux-x86_64/

su - es

cd /usr/local/kibana-7.6.1-linux-x86_64/bin/

nohup ./kibana &

檢視日誌

tail -f nohup.out

4.檢視程序

Kibana的程序通過ps -ef|grep kibana是無法檢視到的,所以我們可以通過埠來進行檢視

netstat -tunlp|grep 5601
tcp        0      0 192.168.111.129:5601    0.0.0.0:*               LISTEN      3974/./../node/bin/

要想通過ps來檢視的話可以通過ps -ef|grep node來進行檢視,不過node檢視的話,不一定會準確

ps -ef|grep node
es         3974   3816  1 4月05 pts/0   00:01:54 ./../node/bin/node ./../src/cli
root       5029   4983  0 00:01 pts/0    00:00:00 grep --color=auto node

5.訪問Kibana web頁面

訪問IP:5601即可

6.測試連通性

elasticsearch-analysis-ik分詞器外掛安裝

作用:如果直接使用Elasticsearch的分詞器在處理中文內容的搜尋時,ES會將中文詞語分成一個一個的漢字。當用Kibana作圖,按照term來分組的時候,也會將一個漢字單獨分成一組。這對於我們的使用是及其不方便的,因此我們引入es之中文的分詞器外掛es-ik就能解決這個問題。

elasticsearch-analysis-ik分詞器下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

1.建立分詞器目錄

分詞器安裝在ES目錄下即可,所有在ES目錄下建立分詞器目錄

cd /usr/local/elasticsearch-7.6.1/plugins/

mkdir ik

2.解壓安裝包

unzip elasticsearch-analysis-ik-7.6.1.zip -d /usr/local/elasticsearch-7.6.1/plugins/ik/

3.重新對ES目錄授權

chown -R es:es /usr/local/elasticsearch-7.6.1/

4.重啟ES和Kibana

可以先通過Kill命令殺掉ES和Kibana程序

su - es

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

此時的ES日誌是可以檢視到是有載入分詞器外掛的

cd /usr/local/kibana-7.6.1-linux-x86_64/bin/

nohup ./kibana &

分詞器安裝完成後,我們就可以來了解Kibana的一些具體操作了,可參考Kibana使用說明 


日誌分析場景實現可參考ELK與EFK部署