本博文只用於實現簡單羣集配置,更深刻的資料能夠參考官方文檔。html
環境以下:java
系統版本 | IP | 角色 |
---|---|---|
centos 7.5 | 192.168.20.2 | ES 0一、logstash、ES-Head、logstash、kibana |
centos 7.5 | 192.168.20.7 | ES 02 |
centos 7.5 | 192.168.20.8 | ES 03 |
注:文中用到的全部軟件包,都可在個人網盤連接中下載,或者去es中文社區下載es相關組件。node
[root@node01 src]# cat > /etc/hosts << EOF > 192.168.20.2 node01 > 192.168.20.7 node02 > 192.168.20.8 node03 > EOF > #將hosts文件發送到其餘節點 [root@node01 src]# scp /etc/hosts root@node02:/etc/hosts [root@node01 src]# scp /etc/hosts root@node03:/etc/hosts
注:如下操做須要在全部節點上進行配置。linux
JDK官方下載地址nginx
#卸載自帶的java環境 [root@node01 src]# rpm -qa | grep jdk java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64 copy-jdk-configs-3.3-2.el7.noarch java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64 java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64 [root@node01 src]# rpm -e java-1.8.0-openjdk-headless --nodeps [root@node01 src]# rpm -e java-1.7.0-openjdk-headless --nodeps #配置jdk環境 [root@node01 src]# tail -4 /etc/profile #追加內容以下 export JAVA_HOME=/usr/local/jdk1.8.0_241 export JRE_HOME=/usr/local/jdk1.8.0_241/jre export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #刷新配置並查看配置是否正確 [root@node01 src]# . /etc/profile [root@node01 src]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
注:下載安裝的操做須要再全部節點上執行git
#下載並安裝elasticsearch [root@node01 src]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-x86_64.rpm [root@node01 src]# rpm -ivh elasticsearch-7.5.1-x86_64.rpm #設置開機自啓動 [root@node01 src]# systemctl daemon-reload [root@node01 src]# systemctl enable elasticsearch.service
#查看elasticsearch的配置文件目錄 [root@node01 elasticsearch]# pwd /etc/elasticsearch [root@node01 elasticsearch]# ls elasticsearch.keystore jvm.options role_mapping.yml users elasticsearch.yml log4j2.properties roles.yml users_roles #elasticsearch默認內存使用爲1G,能夠更改以下配置,修改其默認使用內存 [root@node01 elasticsearch]# cat jvm.options -Xms1g -Xmx1g
注:生產環境中建議將Xms和Xmx兩個值設置爲一致,通常設置爲物理內存的一半,但最高最好不要超過30Ggithub
若是服務器文件數上線和線程上線較低,就會產生以下異常:chrome
1. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]每一個進程最大同時打開文件數過小 2. max number of threads [3818] for user [es] is too low, increase to at least [4096]最大線程個數過低
能夠進行如下修改,以便修改可打開文件數的大小npm
[root@node01 elasticsearch]# vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 #注:修改上述配置後,須要退出當前用戶再從新登陸纔可生效 #從新登陸後,可使用如下命令查看是否生效 #查看最大線程個數 [root@node01 elasticsearch]# ulimit -Hu 4096 [root@node01 elasticsearch]# ulimit -Su 4096 #查看每一個進程最大同時打開文件數 [root@node01 elasticsearch]# ulimit -Sn 65536 [root@node01 elasticsearch]# ulimit -Hn 65536
[root@node01 ~]# vim /etc/elasticsearch/elasticsearch.yml #修改es主配置文件 cluster.name: my-es #羣集名稱 node.name: node01 #es節點名稱 bootstrap.memory_lock: false #啓動時不鎖定內存 network.host: 0.0.0.0 #監聽地址 http.port: 9200 #監聽端口 discovery.seed_hosts: ["node01", "node02", "node03"] #這裏指定參與集羣的主機節點 cluster.initial_master_nodes: ["node01", "node02", "node03"] #同上 #在配置文件末尾添加如下內容,後面es-head鏈接es羣集時須要 http.cors.enabled: true #添加該行,開啓跨域訪問支持 http.cors.allow-origin: "*" #添加該行,跨域訪問容許的域名地址 #啓動服務,並將修改好的配置文件發送到其餘節點 [root@node01 ~]# systemctl start elasticsearch [root@node01 ~]# scp /etc/elasticsearch/elasticsearch.yml root@node02:/etc/elasticsearch/ [root@node01 ~]# scp /etc/elasticsearch/elasticsearch.yml root@node03:/etc/elasticsearch/
#node02節點配置以下(修改節點名稱便可) [root@node02 ~]# sed -i 's#node.name: node01#node.name: node02#g' /etc/elasticsearch/elasticsearch.yml [root@node02 ~]# systemctl start elasticsearch #node03節點配置以下 [root@node03 ~]# sed -i 's#node.name: node01#node.name: node03#g' /etc/elasticsearch/elasticsearch.yml [root@node03 ~]# systemctl start elasticsearch
訪問各個節點的9200端口,便可看到以下頁面:bootstrap
谷歌提供的有elasticsearch head插件,在應用商店搜索以下便可安裝:
雖然可使用chrome的插件,可是每一個使用者都須要安裝chrome,並安裝ElasticSearch head插件。因爲目前google被國內限制的緣故,安裝chrome比較麻煩。做爲替代方案,咱們能夠在linux服務器安裝ElasticSearch Head應用。
該插件在github存在,能夠參考安裝。
注:如下配置在其中一個節點進行便可
[root@node01 ~]# git clone git://github.com/mobz/elasticsearch-head.git [root@node01 ~]# cd elasticsearch-head/ #安裝epel源及更新openssl [root@node01 elasticsearch-head]# yum -y install epel-release [root@node01 elasticsearch-head]# yum -y update openssl #安裝npm(注:必須安裝epel源纔可安裝npm) [root@node01 elasticsearch-head]# yum -y install npm [root@node01 elasticsearch-head]# npm install
注:若是在執行npm install命令時,長時間停留在以下界面,或者報錯,只需Ctrl+c終止後從新運行該命令便可。
後臺啓動elasticsearch head,不然會一直佔用當前終端:
[root@node01 elasticsearch-head]# npm run start & #後臺啓動 [root@node01 ~]# ss -lnp | grep 9100 #肯定9100端口在監聽
瀏覽器訪問elasticsearch head所在主機的9100端口,並鏈接到es羣集的9200端口,便可在瀏覽器查看羣集狀態,以下:
注:Elasticsearch默認不容許第三方接入,能夠修改Elasticsearch的配置文件elasticsearch.yml,添加以下所示配置(我在第一次修改配置文件時,已經增長了以下配置):
http.cors.enabled: true http.cors.allow-origin: "*"
[root@node01 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-x86_64.rpm [root@node01 src]# rpm -ivh kibana-7.5.1-x86_64.rpm
[root@node01 ~]# vim /etc/kibana/kibana.yml #編輯主配置文件 server.host: "0.0.0.0" #指定kibana監聽地址 elasticsearch.hosts: ["http://192.168.20.2:9200","http://192.168.20.7:9200","http://192.168.20.8:9200"] #指定es監聽地址,能夠寫羣集中的某一個節點監聽地址 kibana.index: ".kibana" #在elasticsearch中添加.kibana索引 #設置開機自啓並啓動kibana [root@node01 ~]# systemctl enable kibana [root@node01 ~]# systemctl start kibana [root@node01 ~]# ss -lnp | grep 5601 #肯定kibana端口在監聽 tcp LISTEN 0 128 *:5601 *:* users:(("node",pid=2593,fd=28))
因爲kibana 7以前的版本,官方並無支持中文,須要另外下載補丁包。
地址:https://github.com/anbai-inc/Kibana_Hanization
kibana 7的版本,官方加入了中文的選項,只須要修改kibana的配置文件便可,以下:
[root@node01 bin]# sed -i 's/#i18n.locale: "en"/i18n.locale: "zh-CN"/g' /etc/kibana/kibana.yml
注:修改配置文件後,記得重啓生效哦!
啓動完成後,訪問主機的5601端口,便可看到以下界面:
在實際生產環境中,大多中小架構多是這樣的:filebeat===》kafka===》logstash===》elasticsearch===》kibana。我這裏只是想將新版的某些組件安裝配置一下,因此省略了前兩個,直接用logstash來收集主機日誌了。
注:下面收集的有nginx的日誌,請自行配置nginx。
#下載logstash並安裝 [root@node01 src]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.1.rpm [root@node01 src]# rpm -ivh logstash-7.5.1.rpm #設置開機自啓 [root@node01 src]# systemctl daemon-reload [root@node01 src]# systemctl enable logstash.service #編輯配置文件,收集日誌 [root@node01 src]# cd /etc/logstash/conf.d/ [root@node01 conf.d]# vim nginx_log.conf input { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } file{ path => "/var/log/nginx/access.log" type => "access" start_position => "beginning" } file{ path => "/var/log/nginx/error.log" type => "error" start_position => "beginning" } } output { if [type] == "system" { elasticsearch { hosts => ["192.168.20.2:9200"] index => "system-%{+YYYY.MM.dd}" } } if [type] == "access" { elasticsearch { hosts => ["192.168.20.2:9200"] index => "access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.20.2:9200"] index => "error-%{+YYYY.MM.dd}" } } } [root@node01 conf.d]# chmod +r /var/log/messages #賦予該目錄其餘人的讀權限 [root@node01 conf.d]# ln -sf /usr/share/logstash/bin/logstash /usr/local/bin/ #對命令作軟鏈接 [root@node01 conf.d]# systemctl start logstash #啓動服務 [root@node01 conf.d]# logstash -f nginx_log.conf & #放入後臺運行
顯示以下,表示正常:
好了,至於kibana如何添加索引,自行研究吧,沒有耐心寫了,能夠參考我以前的博文來進行添加kibana上的索引。