終結初學者對ElasticSearch、Kibana、Logstash安裝的種種困難

發表於2022-03-21

專案中準備使用ElasticSearch,之前只是對ElasticSearch有過簡單的瞭解沒有系統的學習,本系列文章將從基礎的學習再到深入的使用。

咔咔之前寫了一份死磕MySQL文章,如今再入一個系列玩轉ElasticSearch。

本期文章會帶給大家安裝ElasticSearch、Kibana、Logstash、配置ElasticSearch外網可訪問、配置守護程式啟動Kibana、ElasticSearch、使用Logstash匯入演示資料到ElasticSearch中。

ElasticSearch安裝
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埠即可

cerebro安裝
cerebro安裝

八、總結

跟著本期文章大家可以成功的把ElasticSearch、Kibana成功安裝並啟動,ElasticSearch若要讓外網可以訪問還需要新增幾個配置,跟著本期文章走都可以實現的。

簡單瞭解Kibana的介面,後期大多數的演練都在Kibana上。

最後給大家聊了最感興趣的守護程式啟動ElasticSearch和Kibana,網上很多資料不全,執行起來還有問題,咔咔給你最全教程跟著操作即可。

死磕MySQL系列總目錄

堅持學習、堅持寫作、堅持分享是咔咔從業以來所秉持的信念。願文章在偌大的網際網路上能給你帶來一點幫助,我是咔咔,下期見。

相關文章