ELK5.5(ElasticSearch+Logstach+Kibana)在Centos7下搭建

環境:java

centos7node

jdk1.8linux

elasticsearch5.5.0git

Logstach5.5.0github

Kibana5.5.0npm

 

安裝jdk1.8bootstrap

 

因爲elasticsearch是用Java寫的,因此須要先安裝好java環境,此處省略vim

 

安裝elasticsearchcentos

 

假設安裝到/usr/local/software瀏覽器

 

下載解壓

cd /usr/local/software

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz

tar -zxvf elasticsearch-5.5.0.tar.gz

mv elasticsearch-5.5.0  elasticsearch

 

 

編輯配置文件config/elasticsearch.yml

cd elasticsearch

vim config/elasticsearch.yml

設置

 
cluster.name: my_cluster
node.name: node1

http.cors.enabled: true

http.cors.allow-origin: "*"

network.host:  0.0.0.0 或者你本身的服務器ip

http.port: 9200

 

這裏須要注意的是,es 規定 root 用戶不能啓動 es,因此須要建立一個用戶來啓動 es

 

建立用戶名爲 elastic 的用戶

useradd elastic

設置 elastic 用戶的密碼

passwd elastic

而後輸入12345678

 

建立 es 的 data 和 logs 目錄

cd elasticsearch

mkdir data

mkdir logs 

 

將 /usr/local/software/elasticsearch 的擁有者設置爲 elastic

chown -R elastic:elastic /usr/local/software/elasticsearch

 

 

切換到 elastic 用戶,啓動 es

su elastic

加了-d是後臺啓動 不加是前臺啓動,第一次不建議後臺啓動,前臺啓動能夠直觀的看到日誌信息

bin/elasticsearch

 

 

可能遇到的錯誤

 

問題:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解決方法:

切換到root用戶修改

su root

vim /etc/security/limits.conf

在最後面追加下面內容 其中elastic表示剛剛建立的用戶名

elastic hard nofile 65536

elastic soft nofile 65536

修改後切換到es用戶,使用以下命令查看是否修改爲功

ulimit -Hn

65536

 

 

問題:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解決方法:

切換到root用戶,進入limits.d目錄下修改配置文件

vim /etc/security/limits.d/90-nproc.conf 

soft nproc 1024修改爲2048

 

問題:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決方法:

提升vm.max_map_count 的大小

切換到root用戶

su root

vim /etc/sysctl.conf

在最後面追加下面內容

vm.max_map_count=300000

使用 sysctl -p 查看修改後的結果

sysctl -p

 

問題:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

解決方法:

因爲elasticsearch5.x默認分配jvm空間大小爲2g,修改jvm空間分配

若是使用虛擬機安裝,內存最好不小於2G

vim config/jvm.options

-Xms2g

-Xmx2g

改爲  

-Xms256m

-Xmx256m

在阿里雲上可能會出現的問題:

system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解決方法:在es配置文件中加入下面命令便可

vim config/elasticsearch.yml

bootstrap.system_call_filter: false

 

最後再重啓服務器再啓動es!!!

 

 

打開防火牆端口

systemctl start firewalld

firewall-cmd --zone=public --add-port=9200/tcp --permanent

firewall-cmd --zone=public --add-port=9300/tcp --permanent

firewall-cmd --reload

 

在肯定服務器端口(9200)開啓,elasticsearch啓動的狀況下查看運行狀況

ps -ef | grep elasticsearch

也能夠在瀏覽器中訪問測試 http://你的服務器ip:9200 能打開則表示成功

 

關閉elasticSearch

elasticsearch的進程號

ps -ef | grep elastic

用kill -9

 

 

tar.gz方式安裝es實現開機自啓動

 

增長一個elasticsearch.service文件

vim /usr/lib/systemd/system/elasticsearch.service

內容以下:

#!/bin/sh

export JAVA_HOME=/usr/local/software/jdk
export PATH=$JAVA_HOME/bin:$PATH

[Unit]  
Description=elasticsearch  
After=network.target  
   
[Service]
User=elastic  
Type=forking  

ExecStart=/usr/local/software/elasticsearch/bin/elasticsearch -d  
 
PrivateTmp=true  

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
 
# Specifies the maximum number of processes
LimitNPROC=2048
 
# Specifies the maximum number of bytes of memory that may be locked into RAM
# Set to "infinity" if you use the 'bootstrap.memory_lock: true' option
# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/sysconfig/elasticsearch
#LimitMEMLOCK=infinity
 
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
 
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
 
# Send the signal only to the JVM rather than its control group
KillMode=process
 
# Java process is never killed
SendSIGKILL=no
 
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
   
[Install]  
WantedBy=multi-user.target

 

 

設置文件權限

chmod +x  elasticsearch.service

 

設置開機啓動

systemctl enable elasticsearch

啓動服務

systemctl start elasticsearch

 

可能會提示

which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

 

增長一個軟鏈接

ln -s /usr/local/software/jdk/bin/java /usr/bin/java

 

再次執行systemctl start elasticsearch

 

可重啓服務器 測試是否開機啓動es服務

 

安裝ik分詞器

下載es的IK插件:https://github.com/medcl/elasticsearch-analysis-ik/releases(選擇對應的版本,IK版本與ES版本一致)

將下載的zip包拷貝至ES_HOME/plugins/ik(ps:ik目錄沒有的話本身新建一個就好)

或者直接wget命令下載
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.0/elasticsearch-analysis-ik-5.5.0.zip
而後使用unzip命令解壓

重啓es服務

測試分詞效果

curl 'http://localhost:9200/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"這裏是一篇很是優秀的文章"}'

 

 安裝Head插件

 

head插件能夠用來快速查看elasticsearch中的數據概況以及非全量的數據,也支持控件化查詢和rest請求。

 

elasticsearch5.x不能夠直接經過plugin -install mobz/elasticsearch-head安裝了,

 

而且head須要在node環境下運行

 

 

安裝nodejs

 

head插件是nodejs實現的,因此必須先安裝Nodejs

 

su root

 

yum install -y epel-release

 

yum install -y nodejs npm

 

 

 

安裝git

 

咱們這裏用git方式下載head插件,也能夠手動下載而後上傳。

 

yum install -y git

 

git --version

 

 

 

下載並安裝elasticsearch-head

 

cd /usr/local/software/

 

git clone https://github.com/mobz/elasticsearch-head.git

 

cd elasticsearch-head

 

npm install -g grunt-cli 

 

npm run start

 

 

 

修改es-head的監聽地址 增長hostname屬性

 

cd elasticsearch-head  #(elasticsearch-head源碼文件夾)

 

vim Gruntfile.js

connect: {
        server: {
                options: {
                        hostname: '服務器ip',
                        port: 9100,
                        base: '.',
                        keepalive: true
                }
        }
}

修改es-head的鏈接地址

cd elasticsearch-head  #(elasticsearch-head源碼文件夾)

vim _site/app.js

找到     this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

將localhost改爲es服務ip地址

 

 

修改elasticsearch參數,以便於head插件訪問es

vim config/elasticsearch.yml

在elasticsearch下的elasticsearch.yml下新增一下兩行:

http.cors.enabled: true

http.cors.allow-origin: "*"

而後重啓es

 

打開防火牆端口

systemctl start firewalld

firewall-cmd --zone=public --add-port=9100/tcp --permanent

firewall-cmd --zone=public --add-port=9200/tcp --permanent

firewall-cmd --reload

 

啓動elasticsearch-head

cd elasticsearch-head(elasticsearch-head源碼文件夾)

grunt server

 

瀏覽器訪問http://服務器ip:9100 查看head插件

 

安裝Logstash

cd /usr/local/software
tar -zxvf logstash-5.5.0.tar.gz
mv logstash-5.5.0 logstash

cd logstash
編寫配置文件(名字和位置能夠隨意,這裏我放在config目錄下,取名爲logconfig1.config)
vim config/logconfig1.config

 

input {
        file {
                path => "/usr/local/logs/*.log"
                start_position => "beginning"
        }
        file {
                path => "/usr/local/logs/test.log"
                start_position => "beginning"
        }
}
filter {
  
}
output {
  elasticsearch {
    hosts  => "localhost:9200"
    index => "znsindex"
  }
}

其餘的選項保持默認,而後啓動Logstash
cd logstash

sh ./bin/logstash -f config/logconfig1.config

或者後臺啓動
nohup sh ./bin/logstash -f config/logconfig1.config > nohup.log 2>&1 &

 

//好比 config/目錄下有
//in1.conf、in2.conf、filter1.conf、filter2.conf、out.conf這些文件
//咱們使用 sh ./bin/logstash -f /config啓動logtstash
//logstash會自動加載這些配置文件,併合併成1個總體的配置文件

 

安裝Kibana

cd /usr/local/software
tar -zxvf kibana-5.5.0-linux-x86_64.tar.gz
mv kibana-5.5.0-linux-x86_64 kibana
cd kibana

vim config/kibana.yml
修改如下幾項(因爲是單機版的,所以host的值也可使用localhost來代替)

 

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: http://127.0.0.1:9200
kibana.index: ".kibana"

開啓端口
systemctl start firewalld
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload

啓動kibana

sh ./bin/kibana

或者後臺啓動

nohup sh ./bin/kibana > nohup.log 2>&1 &

 

啓動後訪問界面 http://ip:5601
點擊左邊Discover
按照註釋配置,Define Index Pattern 爲了簡單直接輸入*,而後點擊Next step,在第二頁 選擇@timestamp點擊create建立

過一段時間後刷新能夠看到已經收集到了上面配置的路徑日誌信息

 

 

注:以上相關軟件路徑 根據本身實際狀況填寫

相關文章
相關標籤/搜索