專案中準備使用ElasticSearch,之前只是對ElasticSearch有過簡單的瞭解沒有系統的學習,本系列文章將從基礎的學習再到深入的使用。
咔咔之前寫了一份死磕MySQL文章,如今再入一個系列玩轉ElasticSearch。
本期文章會帶給大家安裝ElasticSearch、Kibana、Logstash、配置ElasticSearch外網可訪問、配置守護程式啟動Kibana、ElasticSearch、使用Logstash匯入演示資料到ElasticSearch中。
一、安裝ElasticSearch
從0開始搭建一個ElasticSearch環境,接下來先安裝。
ElasticSearch官網在一直改版,有很多小夥伴找不到下載位置。
進去之後點選圈起來的位置,不要點選左邊直接下載了
進去之後可以看到釋出的歷史版本,根據自己的需求下載對應的版本即可,這裡咔咔下載的是7.1.0版本
如果你是Linux,可以開啟開發者模式,把地址複製出來,使用wget + 地址 直接下載即可。
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz
可以看到此時已將ElasticSearch下載下來了,這是已經解壓好的
到了這一步不要衝動直接就去啟動,ElasticSearch從5.x版本開始為了安全起見,不能直接使用root使用者啟用。
新增使用者
執行useradd es,新增es使用者
在root使用者下把ElasticSearch使用者許可權給es使用者即可
chown -R es ElasticSearch
啟動ElasticSearch
切到es使用者後,執行執行./bin/elasticsearch
即可啟動ElasticSearch
啟動出現初始化金鑰庫問題
Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.6.0/config/elasticsearch.keystore
Likely root cause: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-7.1.0/config/elasticsearch.keystore
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at org.apache.lucene.store.SimpleFSDirectory.openInput(SimpleFSDirectory.java:77)
at org.elasticsearch.common.settings.KeyStoreWrapper.load(KeyStoreWrapper.java:206)
at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:224)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:289)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Refer to the log for complete error details.
這個版本需要進行安全認證功能需要建立elasticsearch.keystore這個檔案所以輸入下面的命令
./bin/elasticsearch-keystore create
檢視是否啟動成功
在瀏覽器訪問127.0.0.1::9200
看到如下介面就說明已經安裝成功了
這裡咔咔是安裝在centos虛擬機器上的,那麼如果用外網可以訪問到ElasticSearch呢!
二、配置外網訪問
配置外網訪問的步驟也很簡單,跟著步驟走三分鐘搭建好
問題一
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
編輯 /etc/security/limits.conf
,追加以下內容
es soft nofile 65536
es hard nofile 65536
問題二
max number of threads [3782] for user [es] is too low, increase to at least [4096]
意思是elasticsearch最大執行緒數目太低
修改 /etc/security/limits.conf
在檔案末尾增加以下兩行:
es soft nproc 4096
es hard nproc 4096
問題三
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
在/etc/sysctl.conf
檔案最後新增一行
vm.max_map_count=262144
問題四
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
意思是配置以下三者,最少其一
#[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]
在elasticsearch的config目錄下,修改elasticsearch.yml配置檔案
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
network.host: 0.0.0.0
問題五
以上操作都執行完了,但外網還訪問不了,需要看一下防火牆是否關閉
# 關閉防火強
systemctl stop firewalld.service
# 設定永久關閉
systemctl disable firewalld.service
這裡需要注意一點,問題一和二修改完成後需要重啟機器,切記、切記、切記
外網訪問ElasticSearch
可以看到虛擬機器的ip是http://192.168.253.129/
接下來試著在宿主機上訪問虛擬機器ip+埠9200看是否可以訪問
三、安裝Kibana
下載方式跟ElasticSearch一樣,學會怎麼下載這些軟體,這裡需要注意一點下載的版本需要跟ElasticSearch版本一致。
https://artifacts.elastic.co/downloads/kibana/kibana-7.1.0-linux-x86_64.tar.gz
所以接下來需要安裝Kibana7.1.0版本
配置Kibana引數
複製到檔案最後即可
i18n.locale: "zh-CN"
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
啟動Kibana
進到Kibana目錄執行./bin/kibana即可
無法啟動報錯如下
[WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered or elected yet, an election requires a node with id [rEq_ExihQ927BnwBy3Iz7A], have discovered [] which is not a quorum; discovery will continue using [127.0.0.1:9300, 127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303, 127.0.0.1:9304, [::1]:9300, [::1]:9301, [::1]:9302, [::1]:9303, [::1]:9304] from hosts providers and [{node-1}{DtZPMDK4S3qaSQF6mRhRqw}{lBAhaMvDTKmGkysihkwAqA}{192.168.122.130}{192.168.122.130:9300}{ml.machine_memory=1907744768, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 412, last-accepted version 16 in term 1
解決方案:
檢視ElasticSearch的data目錄下有沒有之前的節點資料
Kibana例項啟動如何關閉
檢視當前埠號執行netstat -anp | grep 5601
,最後邊就有程式ID,執行kill -9 程式ID
即可
再重新啟動即可。
如果把Kibana配置為中文
引數已經給到大家了,就是i18n.locale: "zh-CN"
這個配置
進來後你會看到這個頁面
點選工具手,就可以操作ElasticSearch資料了,還是非常nice的
四、Kibana介面快速瀏覽
進入軟體後,可以看到載入資料集
進來之後可以看到三個樣例資料,分別為日誌、電商訂單、航班資料
接著點選Dashboards就會看到剛新增的三組樣本資料
接著看一個非常重要的工具dev Tools,這個工具再後期會大量的使用,用處就是幫助你在Kibana中可以很方便的執行一些ElasticSearch的命令
五、守護程式啟動Kibana、ElasticSearch
在啟動完ElasticSearch和Kibana後你會發現是直接在當前埠啟動的,如果把這個終端關閉就會關閉。
接下來藉助nohup
來實現守護程式啟動,注意不是nohup在網上很多的資料寫的都是這個,不要被混淆了
安裝nohup
當你執行nohup命令發現沒有時,執行
yum install -y coreutils
一般情況下會安裝在
/usr/bin/nohup
執行which nohup
確認安裝位置
將nohup命令配置為全域性,使用最簡單的方式,執行
#vi ~/.bash_profile
# 新增這行程式碼
PATH=$PATH:$HOME/bin:/use/bin
export PATH
然後,儲存,重新整理生效
source ~/.bash_profile
最後,進行驗證,出現版本資訊則安裝成功
nohup --version
啟動Kibana
估計在網看了很多都是讓直接執行nohup ./bin/kibana
,雖然這樣可以讓Kibana啟動起來,但會出現下圖的錯誤,同時當你ctrl+c時Kibana也會關閉掉
需要把錯誤資訊重定向到linux的空洞即可
nohup ./bin/kibana > /dev/null 2>&1 &
你會發現執行完後出來了一行數字,這個就是Kibana的程式ID,如果你忘記了可以執行
ps -ef | grep node
來檢視,因為Kibana是node起的
啟動ElasticSearch
跟啟動Kibana同理,執行
nohup ./bin/elasticsearch > /dev/null 2>&1 &
六、安裝Logstash並匯入演示資料到ElasticSearch
下載地址
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.zip
演示資料是在movielens
這個推薦系統中歐獲取的,資料就不用大家下載了,需要演示資料的找咔咔即可
這類的資料分享不了,所以...
解壓
unzip logstash-7.1.0.zip
啟動logstash
./bin/logstash -f logstash.conf
直接執行肯定是不行的,你首先需要拿到演示資料,接著把logstash.conf、movies.csv檔案放到logstash目錄的第一層即可
下圖圈起來的地方可以就是movies.csv的存放位置,把這個路徑改成你的路徑即可
然後當你再次執行啟動logstash命令時,你會遇到第一個問題
logstash could not find java; set JAVA_HOME or ensure java is in PATH
首先你得確認你有沒有安裝java
# 驗證是否安裝
java -version
出現下圖說明安裝成功了,若未安裝也不用著急,咔咔給你詳細流程
安裝java8
傳送門
https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.tar.gz
心急的你是不是直接wget就上手了,這是不行的,下載java8安裝包需要點選一下確認,並且沒有註冊oracle的還下載不了,因此你先需要一個oracle賬號。
先把壓縮包下載到宿主機,然後使用神器scp命令傳輸檔案,那是相當的快,這樣就可以把下載的java包傳輸到伺服器了。
scp jdk-8u311-linux-x64.tar.gz root:192.168.17.128:/
在/usr/local下建立java目錄
cd /usr/local
mkdir java
移動java壓縮包到/usr/local/java
mv jdk-8u311-linux-x64.tar.gz /usr/local/java/
解壓
tar -zxf jdk-8u311-linux-x64.tar.gz jdk8
配置環境變數
vim /etc/profile
檔案最後加上(如果你跟咔咔的目錄一致,則可不用改動)
export JAVA_HOME=/usr/local/java/jdk8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:/$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
重新整理生效
source /etc/profile
最後驗證即可
# 驗證是否安裝
java -version
再次執行./bin/logstash -f logstash.conf
依然會出現下圖這個錯誤,但java環境屬實已經加上了
來到vim /logstash-7.1.0/bin/logstash.lib.sh
,你就會發現錯誤是從這裡打出去的,原因是JAVACMD
沒有值
在這個檔案裡搜尋了一下發現有很多,於是就直接在上邊重新賦值即可,注意圈起來的地方
儲存,退出,再次執行
./bin/logstash -f logstash.conf
終於大功告成,把資料匯入到ElasticSearch中了
在Kibana中檢視是否存在movies的索引
七、安裝Cerebro
下載
wget https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.tgz
解壓
tar -zxf cerebro-0.9.4.tgz
修改配置檔案,只需要開啟host配置即可,ip地址寫成自己的即可
hosts = [
#{
# host = "http://192.168.17.128:9100"
# name = "Localhost cluster"
# headers-whitelist = [ "x-proxy-user", "x-proxy-roles", "X-Forwarded-For" ]
#}
# Example of host with authentication
{
host = "http://192.168.17.128:9200"
# name = "Secured Cluster"
#auth = {
# username = "admin"
# password = "admin"
#}
}
]
啟動
cd cerebro
./bin/cerebro
輸入ip地址+9000埠即可
八、總結
跟著本期文章大家可以成功的把ElasticSearch、Kibana成功安裝並啟動,ElasticSearch若要讓外網可以訪問還需要新增幾個配置,跟著本期文章走都可以實現的。
簡單瞭解Kibana的介面,後期大多數的演練都在Kibana上。
最後給大家聊了最感興趣的守護程式啟動ElasticSearch和Kibana,網上很多資料不全,執行起來還有問題,咔咔給你最全教程跟著操作即可。
“堅持學習、堅持寫作、堅持分享是咔咔從業以來所秉持的信念。願文章在偌大的網際網路上能給你帶來一點幫助,我是咔咔,下期見。
”