ELK介紹:
在分佈式系統中,應用數量衆多,應用調用鏈複雜,常常使用ELK作爲日誌收集、分析和展示的組件。本篇文章將講講解如何部署ELK,然後講解如何 使用Filebeat採集Spring Boot的日誌輸出到Logstash上,logstash再將日誌輸出到Elasticsearch上,最後展示到kibana上面。整個日誌採集流程如下圖:
1.下載安裝包
https://www.elastic.co/cn/downloads/elasticsearch
https://www.elastic.co/cn/downloads/past-releases
cd /home/niuhao/elasticsearch
#也可在線下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
#執行解壓命令:
tar -zxvf elasticsearch-6.7.1.tar.gz
1.1修改
cd /home/niuhao/elasticsearch/elasticsearch-6.7.1
vi config/jvm.options
#-Xms2g
#-Xmx2g
-Xms512m
-Xmx512m
:wq!
1.2修改elasticsearch.yml
vi /home/niuhao/elasticsearch/elasticsearch-6.7.1/config/elasticsearch.yml
# ---------------------------------- Cluster -------------------------------------
#cluster.name: itstar-master
# ------------------------------------ Node --------------------------------------(三個不能一樣)
#node.name: node-1
#這種組合表示這個節點即有成爲主節點的資格,又存儲數據
#node.master: true
# 這個屬性表示節點是否存儲數據
#node.data: true
# ----------------------------------- Paths ---------------------------------------
path.data: /home/niuhao/elasticsearch/elasticsearch-6.7.1/elasticsearch-logs/data
path.logs: /home/niuhao/elasticsearch/elasticsearch-6.7.1/elasticsearch-logs/logs
# ----------------------------------- Memory -----------------------------------
#bootstrap.memory_lock: false
#bootstrap.system_call_filter: false
# ---------------------------------- Network ------------------------------------
network.host: 0.0.0.0
# --------------------------------- Discovery ------------------------------------
#discovery.zen.ping.unicast.hosts: ["bigdata11"]
#跨域訪問的問題
http.cors.enabled: true
http.cors.allow-origin: "*"
:wq!
2.創建新用戶
第一步:liunx創建新用戶:"adduser niuhao",然後給創建的用戶加密碼:"passwd niuhao",輸入兩次密碼。
第二步:切換剛纔創建的用戶:"su niuhao",然後啓動elasticsearch。如果顯示Permission denied權限不足,則繼續進行第三步。
第三步:給新用戶賦權限,因爲這個用戶本身就沒有權限,肯定自己不能給自己付權限。所以要用root用戶登錄並賦予權限,chown -R niuhao /你的elasticsearch安裝目錄。
通過上面三步就可以啓動elasticsearch了。
3.啓動
(不能用root賬戶,先執行3)
#在root賬號下 執行
chown -R niuhao /home/niuhao/elasticsearch
#再執行啓動命令:
cd /home/niuhao/elasticsearch/elasticsearch-6.7.1
./bin/elasticsearch
#後臺啓動添加參數 -d:
./bin/elasticsearch -d
4.驗證啓動是否成功
如果一切正常,Elasticsearch就會在默認的9200端口運行。這時,打開另一個命令行窗口,請求該端口:
curl localhost:9200
如果得到如下的返回,就說明啓動成功了:
5.遠程訪問elasticsearch服務
默認情況下,Elasticsearch 只允許本機訪問,如果需要遠程訪問,可以修改 Elasticsearch 安裝目錄中的config/elasticsearch.yml文件,去掉network.host的註釋,將它的值改成0.0.0.0,讓任何人都可以訪問,然後重新啓動 Elasticsearch 。
network.host: 0.0.0.0
上面代碼中,"network.host:"和"0.0.0.0"中間有個空格,不能忽略,不然啓動會報錯。線上服務不要這樣設置,要設成具體的 IP。
遇到報錯5
ERROR: [3] bootstrap checks failed [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max number of threads [3802] for user [niuhao] is too low, increase to at least [4096] [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2019-09-11T15:12:16,808][INFO ][o.e.n.Node ] [Ubdrccr] stopping ... [2019-09-11T15:12:16,939][INFO ][o.e.n.Node ] [Ubdrccr] stopped [2019-09-11T15:12:16,940][INFO ][o.e.n.Node ] [Ubdrccr] closing ... [2019-09-11T15:12:16,978][INFO ][o.e.n.Node ] [Ubdrccr] closed
解決方案:
【5.1】
#root身份
vi /etc/security/limits.conf
#文件末尾添加內容(*也是要加上去)
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
【5.2】
#root身份 vi /etc/sysctl.conf #讓配置永久生效 #文件末尾添加內容
vm.max_map_count=655360
#並執行命令:
sysctl -p
【5.3】
Centos6不支持SecComp,而ES6默認bootstrap.system_call_filter爲true
vim config/elasticsearch.yml
禁用:在elasticsearch.yml中配置bootstrap.system_call_filter爲false,注意要在Memory下面: 取消bootstrap.memory_lock的註釋,添加bootstrap.system_call_filter 配置
#注意在":"後面需要空格
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
視圖工具
下載:https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/
修改權限;
chmod -R 777 ElasticHD
運行:
./ElasticHD -p 127.0.0.1:9800
如果運行提示 exec: "xdg-open": executable file not found in $PATH 報錯
因爲找不到xdg-open命令,安裝xdg-utils之後命令就可以使用了.
yum install xdg-utils
再次執行
./ElasticHD -p 127.0.0.1:9800
提示如下,表示已經運行成功
To view elasticHD console open http://127.0.0.1:9800 in browser
xdg-open: no method available for opening 'http://127.0.0.1:9800'
exit status 3