(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官網