'ELKstack介紹及Elasticsearch部署'

"

ELKstack課程大綱

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

ELKstack介紹及Elasticsearch部署

{
#此節點名稱
"name" : "elk01",
#此集群名稱
"cluster_name" : "elk-cluster",
#集群的uuid
"cluster_uuid" : "XFsbUh_AT2y5jyZLGOAZ3w",
"version" : {
#elasticsearch版本
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
#創建快照
"build_snapshot" : false,
#Lucene語法版本(基於Lucene做日誌搜索)
"lucene_version" : "6.4.1"
},
#口號
"tagline" : "You Know, for Search"
}

其他節點安裝並加入集群

安裝其他節點,步驟和上面一樣,修改配置文件時,直接將elk01節點的配置文件scp(拷貝)過去,然後在配置文件中講節點名稱修改後啟動即可。

#發送配置文件到其他節點
[root@elkstack01 ~]# scp /etc/elasticsearch/elasticsearch.yml 172.16.1.52:/etc/elasticsearch/
#修改其他節點配置文件
[root@elkstack02 ~]# vim /etc/elasticsearch/elasticsearch.yml
#此行節點名稱唯一即可
node.name: elk02

操作完成後,同樣啟動elasticsearch並且訪問9200端口,檢查是否安裝成功。

訪問地址:http://10.0.0.52:9200/

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

ELKstack介紹及Elasticsearch部署

{
#此節點名稱
"name" : "elk01",
#此集群名稱
"cluster_name" : "elk-cluster",
#集群的uuid
"cluster_uuid" : "XFsbUh_AT2y5jyZLGOAZ3w",
"version" : {
#elasticsearch版本
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
#創建快照
"build_snapshot" : false,
#Lucene語法版本(基於Lucene做日誌搜索)
"lucene_version" : "6.4.1"
},
#口號
"tagline" : "You Know, for Search"
}

其他節點安裝並加入集群

安裝其他節點,步驟和上面一樣,修改配置文件時,直接將elk01節點的配置文件scp(拷貝)過去,然後在配置文件中講節點名稱修改後啟動即可。

#發送配置文件到其他節點
[root@elkstack01 ~]# scp /etc/elasticsearch/elasticsearch.yml 172.16.1.52:/etc/elasticsearch/
#修改其他節點配置文件
[root@elkstack02 ~]# vim /etc/elasticsearch/elasticsearch.yml
#此行節點名稱唯一即可
node.name: elk02

操作完成後,同樣啟動elasticsearch並且訪問9200端口,檢查是否安裝成功。

訪問地址:http://10.0.0.52:9200/

ELKstack介紹及Elasticsearch部署

如上圖所示:可以看到節點名稱是不一樣的。


安裝elasticsearch插件

插件是為了完成不同的功能,官方提供了一些插件但大部分是收費的,另外也有一些開發愛好者提供的插件,可以實現對elasticsearch集群的狀態監控與管理配置等功能,我們現在要安裝的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

安裝Elasticsearch的head插件時,要安裝npm,npm的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。

在Elasticsearch 5.x版本以後不再支持直接安裝head插件,而是需要通過啟動一個服務方式。

Github地址:https://github.com/mobz/elasticsearch-head

#安裝npm(只需要在一個節點安裝即可,如果前端還有nginx做反向代理可以每個節點都裝)
[root@elkstack01 ~]# yum install -y npm
#進入下載head插件代碼目錄
[root@elkstack01 src]# cd /usr/local/
#從GitHub上克隆代碼到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
#克隆完成後,進入elasticsearch插件目錄
[root@elkstack01 local]# cd elasticsearch-head/
#清除緩存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
#使用npm安裝n模塊(不同的項目js腳本所需的node版本可能不同,所以就需要node版本管理工具)
[root@elkstack01 elasticsearch-head]# npm install -g n
#安裝最新版本n模塊
[root@elkstack01 elasticsearch-head]# n stable
#生成grunt
[root@elkstack01 elasticsearch-head]# npm install grunt -save
#確認生成grunt文件
[root@elkstack01 elasticsearch-head]# ll node_modules/grunt
#執行安裝grunt
[root@elkstack01 elasticsearch-head]# npm install
#後臺啟動head插件(切記,必須在插件目錄下執行啟動命令)
[root@elkstack01 elasticsearch-head]# npm run start &
#驗證端口是否啟動成功
[root@elkstack01 elasticsearch-head]# netstat -lntup
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
#啟動成功後,修改elasticsearch配置文件
[root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#添加如下兩行,開啟跨域訪問支持(添加在配置文件最後即可)
http.cors.enabled: true
http.cors.allow-origin: "*"
#重啟elasticsearch
[root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

如果啟動成功了,則打開瀏覽器,訪問:http://10.0.0.51:9100/

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

ELKstack介紹及Elasticsearch部署

{
#此節點名稱
"name" : "elk01",
#此集群名稱
"cluster_name" : "elk-cluster",
#集群的uuid
"cluster_uuid" : "XFsbUh_AT2y5jyZLGOAZ3w",
"version" : {
#elasticsearch版本
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
#創建快照
"build_snapshot" : false,
#Lucene語法版本(基於Lucene做日誌搜索)
"lucene_version" : "6.4.1"
},
#口號
"tagline" : "You Know, for Search"
}

其他節點安裝並加入集群

安裝其他節點,步驟和上面一樣,修改配置文件時,直接將elk01節點的配置文件scp(拷貝)過去,然後在配置文件中講節點名稱修改後啟動即可。

#發送配置文件到其他節點
[root@elkstack01 ~]# scp /etc/elasticsearch/elasticsearch.yml 172.16.1.52:/etc/elasticsearch/
#修改其他節點配置文件
[root@elkstack02 ~]# vim /etc/elasticsearch/elasticsearch.yml
#此行節點名稱唯一即可
node.name: elk02

操作完成後,同樣啟動elasticsearch並且訪問9200端口,檢查是否安裝成功。

訪問地址:http://10.0.0.52:9200/

ELKstack介紹及Elasticsearch部署

如上圖所示:可以看到節點名稱是不一樣的。


安裝elasticsearch插件

插件是為了完成不同的功能,官方提供了一些插件但大部分是收費的,另外也有一些開發愛好者提供的插件,可以實現對elasticsearch集群的狀態監控與管理配置等功能,我們現在要安裝的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

安裝Elasticsearch的head插件時,要安裝npm,npm的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。

在Elasticsearch 5.x版本以後不再支持直接安裝head插件,而是需要通過啟動一個服務方式。

Github地址:https://github.com/mobz/elasticsearch-head

#安裝npm(只需要在一個節點安裝即可,如果前端還有nginx做反向代理可以每個節點都裝)
[root@elkstack01 ~]# yum install -y npm
#進入下載head插件代碼目錄
[root@elkstack01 src]# cd /usr/local/
#從GitHub上克隆代碼到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
#克隆完成後,進入elasticsearch插件目錄
[root@elkstack01 local]# cd elasticsearch-head/
#清除緩存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
#使用npm安裝n模塊(不同的項目js腳本所需的node版本可能不同,所以就需要node版本管理工具)
[root@elkstack01 elasticsearch-head]# npm install -g n
#安裝最新版本n模塊
[root@elkstack01 elasticsearch-head]# n stable
#生成grunt
[root@elkstack01 elasticsearch-head]# npm install grunt -save
#確認生成grunt文件
[root@elkstack01 elasticsearch-head]# ll node_modules/grunt
#執行安裝grunt
[root@elkstack01 elasticsearch-head]# npm install
#後臺啟動head插件(切記,必須在插件目錄下執行啟動命令)
[root@elkstack01 elasticsearch-head]# npm run start &
#驗證端口是否啟動成功
[root@elkstack01 elasticsearch-head]# netstat -lntup
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
#啟動成功後,修改elasticsearch配置文件
[root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#添加如下兩行,開啟跨域訪問支持(添加在配置文件最後即可)
http.cors.enabled: true
http.cors.allow-origin: "*"
#重啟elasticsearch
[root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

如果啟動成功了,則打開瀏覽器,訪問:http://10.0.0.51:9100/

ELKstack介紹及Elasticsearch部署

安裝成功界面如下:

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

ELKstack介紹及Elasticsearch部署

{
#此節點名稱
"name" : "elk01",
#此集群名稱
"cluster_name" : "elk-cluster",
#集群的uuid
"cluster_uuid" : "XFsbUh_AT2y5jyZLGOAZ3w",
"version" : {
#elasticsearch版本
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
#創建快照
"build_snapshot" : false,
#Lucene語法版本(基於Lucene做日誌搜索)
"lucene_version" : "6.4.1"
},
#口號
"tagline" : "You Know, for Search"
}

其他節點安裝並加入集群

安裝其他節點,步驟和上面一樣,修改配置文件時,直接將elk01節點的配置文件scp(拷貝)過去,然後在配置文件中講節點名稱修改後啟動即可。

#發送配置文件到其他節點
[root@elkstack01 ~]# scp /etc/elasticsearch/elasticsearch.yml 172.16.1.52:/etc/elasticsearch/
#修改其他節點配置文件
[root@elkstack02 ~]# vim /etc/elasticsearch/elasticsearch.yml
#此行節點名稱唯一即可
node.name: elk02

操作完成後,同樣啟動elasticsearch並且訪問9200端口,檢查是否安裝成功。

訪問地址:http://10.0.0.52:9200/

ELKstack介紹及Elasticsearch部署

如上圖所示:可以看到節點名稱是不一樣的。


安裝elasticsearch插件

插件是為了完成不同的功能,官方提供了一些插件但大部分是收費的,另外也有一些開發愛好者提供的插件,可以實現對elasticsearch集群的狀態監控與管理配置等功能,我們現在要安裝的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

安裝Elasticsearch的head插件時,要安裝npm,npm的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。

在Elasticsearch 5.x版本以後不再支持直接安裝head插件,而是需要通過啟動一個服務方式。

Github地址:https://github.com/mobz/elasticsearch-head

#安裝npm(只需要在一個節點安裝即可,如果前端還有nginx做反向代理可以每個節點都裝)
[root@elkstack01 ~]# yum install -y npm
#進入下載head插件代碼目錄
[root@elkstack01 src]# cd /usr/local/
#從GitHub上克隆代碼到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
#克隆完成後,進入elasticsearch插件目錄
[root@elkstack01 local]# cd elasticsearch-head/
#清除緩存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
#使用npm安裝n模塊(不同的項目js腳本所需的node版本可能不同,所以就需要node版本管理工具)
[root@elkstack01 elasticsearch-head]# npm install -g n
#安裝最新版本n模塊
[root@elkstack01 elasticsearch-head]# n stable
#生成grunt
[root@elkstack01 elasticsearch-head]# npm install grunt -save
#確認生成grunt文件
[root@elkstack01 elasticsearch-head]# ll node_modules/grunt
#執行安裝grunt
[root@elkstack01 elasticsearch-head]# npm install
#後臺啟動head插件(切記,必須在插件目錄下執行啟動命令)
[root@elkstack01 elasticsearch-head]# npm run start &
#驗證端口是否啟動成功
[root@elkstack01 elasticsearch-head]# netstat -lntup
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
#啟動成功後,修改elasticsearch配置文件
[root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#添加如下兩行,開啟跨域訪問支持(添加在配置文件最後即可)
http.cors.enabled: true
http.cors.allow-origin: "*"
#重啟elasticsearch
[root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

如果啟動成功了,則打開瀏覽器,訪問:http://10.0.0.51:9100/

ELKstack介紹及Elasticsearch部署

安裝成功界面如下:

ELKstack介紹及Elasticsearch部署

安裝n模塊遇到報錯SSL認證問題,解決方案如下。

"

ELKstack課程大綱

ELKstack介紹及Elasticsearch部署

ELKstack簡介

什麼是ELK?

通俗來講,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每個軟件用於完成不同的功能,ELK 又稱為ELK stack,官方域名為elastic.co,ELK stack的主要優點有如下幾個:

  • 1.處理方式靈活: elasticsearch是實時全文索引,具有強大的搜索功能
  • 2.配置相對簡單:elasticsearch全部使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
  • 3.檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,但是也可以達到百億級數據的查詢秒級響應。
  • 4.集群線性擴展:elasticsearch和logstash都可以靈活線性擴展
  • 5.前端操作絢麗:kibana的前端設計比較絢麗,而且操作簡單

什麼是Elasticsearch?

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,可以處理大規模日誌數據,比如Nginx、Tomcat、系統日誌等功能。

ELKstack介紹及Elasticsearch部署


什麼是Logstash?

可以通過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。

ELKstack介紹及Elasticsearch部署


什麼是Kibana?

主要是通過接口調用elasticsearch的數據,並進行前端數據可視化的展現。

ELKstack介紹及Elasticsearch部署

ELKstack部署及配置

環境準備公網IP內網IP主機名部署服務用途10.0.0.51172.16.1.51elkstack01elasticsearch、JDK存儲日誌的數據庫10.0.0.52172.16.1.52elkstack02elasticsearch、JDK存儲日誌的數據庫10.0.0.53172.16.1.53elkstack03Logstash、JDK收集日誌、過濾日誌10.0.0.54172.16.1.54elkstack04Redis、Kibana消息隊列、日誌展示10.0.0.55172.16.1.55nginx01nginx、filebeat修改nginx日誌格式為json收集10.0.0.56172.16.1.56tomcat01tomcat、JDK、filebeat修改tomcat日誌格式為json收集

安裝包準備安裝包名用途elasticsearch-5.3.0.rpm存儲日誌的數據庫elasticsearch-head.tar.gzelasticsearch的web界面插件logstash-5.3.0.rpm日誌收集、日誌分析工具kibana-5.3.0-x86_64.rpm日誌展示、日誌查詢工具filebeat-5.3.2-x86_64.rpm日誌收集工具(比Logstash輕量)jdk-8u121-linux-x64.tar.gzJAVA容器(es、Logstash、tomcat需要)nginx-1.10.3.tar.gz測試收集nginx日誌apache-tomcat-8.0.38.tar.gz測試收集tomcat日誌redis-3.2.8.tar.gz消息隊列工具

Elasticsearch環境準備

關閉防火牆

#CentOS6 關閉防火牆
[root@elkstack01 ~]# /etc/init.d/iptables stop
#CentOS7 關閉防火牆
[root@elkstack01 ~]# systemctl stop firewalld

關閉SELINUX

#臨時關閉
[root@elkstack01 ~]# setenforce 0
setenforce: SELinux is disabled
#永久關閉
[root@elkstack01 ~]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ==> //原來是enforcing 改成disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

設置epel源

#CentOS6 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#CentOS7 下載epel源
[root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

修改時區

#將時區修改為上海時區
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp:是否覆蓋"/etc/localtime"? y

設置時間同步

#同步服務器時間(切記保證集群之間時間一致非常重要)
[root@elkstack01 ~]# ntpdate time1.aliyun.com
28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec

部署Elasticsearch

在elkstack01 和 elkstack02兩臺機器分別安裝elasticsearch,因為elasticsearch服務運行需要JAVA環境,所以兩臺服務器都需要安裝JAVA環境。

安裝JDK環境

下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#解壓JDK安裝包
[root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz
#將JDK安裝包移動到安裝目錄下
[root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/
#做軟鏈接(方便日後升級)
[root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8
#添加環境變量
[root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#加載環境變量
[root@elkstack01 ~]# source /etc/profile
#檢查是否加載成功
[root@elkstack01 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安裝elasticsearch

下載地址: https://www.elastic.co/downloads/elasticsearch

#安裝elasticsearch使用yum localinstall 自動安裝依賴包
[root@elkstack01 ~]# yum localinstall -y elasticsearch-5.3.0.rpm

修改配置文件

如果系統是CentOS6則做以下修改

#查看配置文件修改部分內容
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#CentOS6不支持內存鎖功能,所以要關閉內存鎖
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]

如果系統是CentOS7則做以下修改

#查看配置文件修改部分內容(CentOS7中配置)
[root@elkstack01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#設置集群名稱(想要其他節點加入同一個集群必須集群名稱相同)
cluster.name: elk-cluster
#節點名稱(通過此配置項來區分集群中的所有節點)
node.name: elk01
#elasticsearch數據存放目錄
path.data: /data/elk/data
#elasticsearch日誌存放目錄
path.logs: /data/elk/logs
#內存鎖設置(在CentOS7中支持內存鎖並且要修改啟動腳本)
bootstrap.memory_lock: true
#elasticsearch監聽地址
network.host: 0.0.0.0
#elasticsearch服務端口
http.port: 9200
#配置所有集群節點IP
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]
#修改啟動腳本
[root@elkstack01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
#修改內存限制(去掉此行註釋)
LimitMEMLOCK=infinity
#重新加載啟動腳本
[root@elkstack01 ~]# systemctl reload-daemon

創建目錄並授權

#創建數據目錄
[root@elkstack01 ~]# mkdir -p /data/elk/data
#創建日誌目錄
[root@elkstack01 ~]# mkdir -p /data/elk/logs
#授權
[root@elkstack01 ~]# chown -R elasticsearch.elasticsearch /data/elk/

優化文件描述符

#編輯limit文件
[root@elkstack01 ~]# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
#編輯子配置文件(CentOS6)
[root@elkstack01 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
root soft nproc unlimited

設置JVM最大最小內存限制

#編輯配置文件
[root@elkstack01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

啟停elasticsearch

#CentOS6 啟動、停止elasticsearch
[root@elkstack01 ~]# /etc/init.d/elasticsearch start
[root@elkstack01 ~]# /etc/init.d/elasticsearch stop
#CentOS7 啟動、停止elasticsearch
[root@elkstack01 ~]# systemctl start elasticsearch
[root@elkstack01 ~]# systemctl stop elasticsearch
#查看啟動進程
[root@elkstack01 ~]# ps -ef|grep java
#查看端口
[root@elkstack01 ~]# netstat -lntup
tcp 0 0 :::9200 :::* LISTEN 10872/java
tcp 0 0 :::9300 :::* LISTEN 10872/java

驗證啟動elasticsearch後的頁面

打開瀏覽器訪問地址:http://10.0.0.51:9200/

ELKstack介紹及Elasticsearch部署

{
#此節點名稱
"name" : "elk01",
#此集群名稱
"cluster_name" : "elk-cluster",
#集群的uuid
"cluster_uuid" : "XFsbUh_AT2y5jyZLGOAZ3w",
"version" : {
#elasticsearch版本
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
#創建快照
"build_snapshot" : false,
#Lucene語法版本(基於Lucene做日誌搜索)
"lucene_version" : "6.4.1"
},
#口號
"tagline" : "You Know, for Search"
}

其他節點安裝並加入集群

安裝其他節點,步驟和上面一樣,修改配置文件時,直接將elk01節點的配置文件scp(拷貝)過去,然後在配置文件中講節點名稱修改後啟動即可。

#發送配置文件到其他節點
[root@elkstack01 ~]# scp /etc/elasticsearch/elasticsearch.yml 172.16.1.52:/etc/elasticsearch/
#修改其他節點配置文件
[root@elkstack02 ~]# vim /etc/elasticsearch/elasticsearch.yml
#此行節點名稱唯一即可
node.name: elk02

操作完成後,同樣啟動elasticsearch並且訪問9200端口,檢查是否安裝成功。

訪問地址:http://10.0.0.52:9200/

ELKstack介紹及Elasticsearch部署

如上圖所示:可以看到節點名稱是不一樣的。


安裝elasticsearch插件

插件是為了完成不同的功能,官方提供了一些插件但大部分是收費的,另外也有一些開發愛好者提供的插件,可以實現對elasticsearch集群的狀態監控與管理配置等功能,我們現在要安裝的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

安裝Elasticsearch的head插件時,要安裝npm,npm的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。

在Elasticsearch 5.x版本以後不再支持直接安裝head插件,而是需要通過啟動一個服務方式。

Github地址:https://github.com/mobz/elasticsearch-head

#安裝npm(只需要在一個節點安裝即可,如果前端還有nginx做反向代理可以每個節點都裝)
[root@elkstack01 ~]# yum install -y npm
#進入下載head插件代碼目錄
[root@elkstack01 src]# cd /usr/local/
#從GitHub上克隆代碼到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
#克隆完成後,進入elasticsearch插件目錄
[root@elkstack01 local]# cd elasticsearch-head/
#清除緩存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
#使用npm安裝n模塊(不同的項目js腳本所需的node版本可能不同,所以就需要node版本管理工具)
[root@elkstack01 elasticsearch-head]# npm install -g n
#安裝最新版本n模塊
[root@elkstack01 elasticsearch-head]# n stable
#生成grunt
[root@elkstack01 elasticsearch-head]# npm install grunt -save
#確認生成grunt文件
[root@elkstack01 elasticsearch-head]# ll node_modules/grunt
#執行安裝grunt
[root@elkstack01 elasticsearch-head]# npm install
#後臺啟動head插件(切記,必須在插件目錄下執行啟動命令)
[root@elkstack01 elasticsearch-head]# npm run start &
#驗證端口是否啟動成功
[root@elkstack01 elasticsearch-head]# netstat -lntup
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
#啟動成功後,修改elasticsearch配置文件
[root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
#添加如下兩行,開啟跨域訪問支持(添加在配置文件最後即可)
http.cors.enabled: true
http.cors.allow-origin: "*"
#重啟elasticsearch
[root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

如果啟動成功了,則打開瀏覽器,訪問:http://10.0.0.51:9100/

ELKstack介紹及Elasticsearch部署

安裝成功界面如下:

ELKstack介紹及Elasticsearch部署

安裝n模塊遇到報錯SSL認證問題,解決方案如下。

ELKstack介紹及Elasticsearch部署

#取消npm的ssl驗證
[root@elkstack01 elasticsearch-head]# npm config set strict-ssl false


"

相關推薦

推薦中...