實驗環境:html
操做系統:Centos 7.5java
服務器ip:192.168.1.198node
運行用戶:rootlinux
網絡環境:Internetweb
在企業生產環境有不少服務器的時候、不少業務模塊的日誌的時候運維人員須要每時每刻查看日誌,這樣的工做量是很是龐大的,這樣就沒有時間作其它的工做, Elasticsearch是個開源分佈式搜索引擎,它的特色有:開源、靈活性、分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等,配置簡單,通常都是結合Logstash、kibana使用,如今作運維的都知道有一個ELK,就是Elasticsearch、Logstash、kibana的簡寫,使用比較普遍、功能強大,簡化運維操做步驟,還能夠實現有錯誤日誌或者故障自動報警,若是服務器有故障,能夠經過告警方式發送個管理員,支持企業微信、企業釘釘、短信等告警方式,你們能夠嘗試去部署,目前還支持docker部署。docker
Elasticsearch是用來存儲各種日誌格式的組件;Logstash是用來收集、處理、分析日誌等,並將其存儲供之後使用;kibana是一個web可視化界面的日誌查詢組件,它能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌展現出來。這3個組件都是開源的,並且是在Linux平臺上面運行的,因此仍是須要有點Linux基礎才能部署,如今大型的企業通常都是在Linux部署ELK系統,若是沒有Linux基礎的能夠去了解下Linux基礎知識或者參考《Linux就該這麼學》網站上面的資料比較全面,直接在百度裏面輸入這本書的名稱就能找到官網,此書名的做者是劉遄,此書比較適合企業應用,本文主要介紹在Linux操做系統下面如何安裝及部署ElasticSearch組件。vim
Elasticsearch很是容易上手,Elasticsearch也是一個基於Apache的開源搜索引擎來提供了許多合理的默認缺省值,並對初學者隱藏了複雜的搜索引擎理論。它開箱即用(安裝便可使用),只需懂點Linux基礎及不多的學習既可在生產環境中使用,Elasticsearch也使用Java開發,並使用Lucene做爲其核心架構來實現全部索引和搜索的功能性的組件,可是它的目的是經過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單,比較適合於初學者。centos
1、運行環境瀏覽器
JDK:1.8.0_171(JAVA_SE)服務器
Elasticsearch-6.3.1 (JDK只能用1.8版本)
Logstash-6.3.1
kibana-6.3.1
2、安裝Java、Elasticsearch
一、安裝JDK
下載JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;本環境下載的是64位tar.gz包,將安裝包拷貝至安裝服務器/usr/local目錄
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar -xzvf jdk-8u171-linux-x64.tar.gz
[root@localhost local]# mv jdk1.8.0_171 java
二、配置JDK環境變量
方法一:
[root@localhost local]# vim /etc/profile
將下面的內容添加至文件末尾(假如服務器須要多個JDK版本,爲了ELK不影響其它系統,也能夠將環境變量的內容稍後添加到ELK的啓動腳本中)
JAVA_HOME=/usr/local/java
JRE_HOME=/usr/local/java/jre
CLASSPATH=.:$JAVA_HOME/lib:/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
[root@localhost local]# source /etc/profile
[root@localhost local]# chmod +x /etc/rc.local
[root@localhost local]# vim /etc/rc.local
source /etc/profile //添加此行
方法二:
直接吧java.sh放到/etc/profile.d/,重啓系統
[root@localhost local]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
[root@centos7 ~]# java -version //查看java版本,測試JDK是否配置成功
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
配置limit相關參數
[root@localhost local]# vim /etc/security/limits.conf
添加如下內容
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
ulimit -u 4096
[root@localhost local]vim /etc/security/limits.d/20-nproc.conf
修改以下內容:
* soft nproc 1024 #修改成 * soft nproc 2048 或soft nproc 4096 (根據CPU定,最低是2048)
#vim /etc/sysctl.conf
//添加下面配置: v
m.max_map_count=655360
//並執行命令:
#sysctl -p
編輯elasticsearch配置文件
#vim usr/local/elasticsearch-5.6.0/config/elasticsearch.yml
cluster.name: nmtx-cluster
node.name: node-1
path.data: /usr/local/elk/data
path.logs: /usr/local/elk/logs
network.host: 192.168.3.104
http.port: 9200
建立運行ELK的用戶
[root@localhost local]# groupadd elk
[root@localhost local]# useradd -g elk elk
建立ELK運行目錄
[root@localhost local]# mkdir -p /usr/local/elk
[root@localhost local]# chown -R elk:elk /usr/local/elk
關閉防火牆:
[root@localhost ~]# iptables -F
以上所有是root用戶完成
三、安裝ELK
如下由elk用戶操做
以elk用戶登陸服務器
下載ELK安裝包:https://www.elastic.co/downloads,並上傳到服務器且解壓,解壓命令:tar -xzvf 包名
配置Elasticsearch
修改以下內容:
保存退出
啓動Elasticsearch
查看是否啓動成功
用瀏覽器訪問:http://192.168.10.169:9200
Elasticsearch安裝完畢
vi /etc/security/limits.conf
//添加以下內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
問題三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解決:切換到root用戶,進入limits.d目錄下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
//修改以下內容:
* soft nproc 1024 #修改成 * soft nproc 2048
問題四:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解決:切換到root用戶修改配置sysctl.conf
vi /etc/sysctl.conf
//添加下面配置:
vm.max_map_count=655360
//並執行命令:
sysctl -p 而後,從新啓動elasticsearch,便可啓動成功。
四、測試,出現下面說明啓動elasticsearch成功。
[root@centos7 local]# curl http://127.0.0.1:9200
{
"name" : "pcncnlr",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "uCqIPKYqT_au90cjmtj1rw",
"version" : {
"number" : "6.3.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "eb782d0",
"build_date" : "2018-06-29T21:59:26.107521Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}