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

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

本期文章會帶給大家安裝ElasticSearch、Kibana、Logstash、配置ElasticSearch外網可訪問、配置守護進程啓動Kibana、ElasticSearch、使用Logstash導入演示數據到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安裝

八、總結

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

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