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部署