項目中准備使用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,網上很多資料不全,執行起來還有問題,咔咔給你最全教程跟着操作即可。
“堅持學習、堅持寫作、堅持分享是咔咔從業以來所秉持的信念。願文章在偌大的互聯網上能給你帶來一點幫助,我是咔咔,下期見。
”