ELK:ElasticSerach、Logstash、Kibana三款產品名稱的首字母集合,用於日誌的蒐集和搜索。簡單地理解爲咱們能夠把服務端的日誌(nginx、tomcat等)直接web化展現查看,十分方便。java
本機環境說明: 系統:centos7.5 ElasticSerach:6.4.2 Logstash:6.4.2 Kibana:6.4.2 Filebeat:6.4.2
說明:圖是直接搜索的網上的,其中nginx、elk這裏都採用單機直接部署,因此ip相同,我這裏爲192.168.21.128。
1. 業務請求到達nginx-server機器上的Nginx; 2. Nginx響應請求,並在access.log文件中增長訪問記錄; 3. FileBeat蒐集新增的日誌,經過LogStash的5044端口上傳日誌; 4. LogStash將日誌信息經過本機的9200端口傳入到ElasticSerach; 5. 搜索日誌的用戶經過瀏覽器訪問Kibana,服務器端口是5601; 6. Kibana經過9200端口訪問ElasticSerach;
由於ElasticSerach運行須要java環境支持,因此首先要配置java環境,具體操做方法自行百度吧,網上比較多。linux
ELK官網:https://www.elastic.co/downloadsnginx
手動下載ELK安裝的tag.gz文件,這裏咱們放入/usr/local/work/下,並解壓縮,最終效果以下:web
由於ElasticSerach運行時不容許以root用戶身份的,因此這裏須要手動建立用戶並分配權限,具體以下:centos
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/work/elasticsearch-6.4.2
打開文件/etc/security/limits.conf,添加下面4處內容:瀏覽器
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
打開文件/etc/sysctl.conf,添加下面內容:tomcat
vm.max_map_count=655360
sysctl -p
重啓電腦,執行命令:reboot
服務器
su elasticsearch
bin/elasticsearch -d
,此時會在後臺啓動elasticsearch(若是啓動報錯沒有權限的話,從新執行上面的chown那部分命令設置權限)tail -f /usr/local/work/elasticsearch-6.4.2/logs/elasticsearch.log
curl 127.0.0.1:9200
,收到響應以下:具體效果:curl
# 監聽5044端口做爲輸入 input { beats { port => "5044" } } # 數據過濾 filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } geoip { source => "clientip" } } # 輸出配置爲本機的9200端口,這是ElasticSerach服務的監聽端口 output { elasticsearch { hosts => ["127.0.0.1:9200"] } }
nohup bin/logstash -f default.conf –config.reload.automatic &
tail -f logs/logstash-plain.log
,啓動成功的信息以下:#server.host: "localhost"
改爲以下內容:elasticsearch
server.host: "192.168.21.128"
nohup bin/kibana &
tail -f nohup.out
注意: 這裏訪問5601的時候可能訪問不通,centos有本身的防火牆及端口限制,具體設置自行百度吧,不少的。
nohup ./filebeat -e -c filebeat.yml -d "publish" &
至此,環境搭建完成~