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以后,Microsoft 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 reload firewalld
//開啟防火牆
systemctl start firewalld
成功訪問界面如下:
注意:Elasticsearch生產環境中建議設置elasticsearch.yml文件中bootstrap.memory_lock: true,原因是發生系統swapping的時候,ES節點的性能會非常差,也會影響節點的穩定性。
如果啟動時候出現如下錯誤:
memory locking requested for elasticsearch process but memory is not locked
請輸入命令vim /etc/security/limits.conf,添加如下內容重啟系統即可:
用戶名 soft memlock unlimited 用戶名 hard memlock unlimited 用戶名 - nofile 65536
解決如上問題官網鏈接:
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html#bootstrap-memory_lock
https://www.elastic.co/guide/en/elasticsearch/reference/7.13/setting-system-settings.html#sysconfig
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跟設置的密碼即可登錄成功!
5.1后台開啟Kibana服務
假設kibana安裝目錄是/home/deng/kibana/kibana-7.8.0-linux-x86_64/。
●使用nohup命令
nohup /home/deng/kibana/kibana-7.8.0-linux-x86_64/bin/kibana &
●使用exit退出shell終端
/home/deng/kibana/kibana-7.8.0-linux-x86_64/bin/kibana &
等待加載出status信息,接着輸入“exit”回車,shell界面關閉。
參考文獻:
Elasticsearch官網