環境: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
設置
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建立
過一段時間後刷新能夠看到已經收集到了上面配置的路徑日誌信息
注:以上相關軟件路徑 根據本身實際狀況填寫