下載ELK
elasticsearch+kibana下載地址:https://www.elastic.co/cn/start
logstash下載地址:https://www.elastic.co/cn/downloads/logstash
筆者採用的所有版本都是7.4.2,資源鏈接:https://pan.baidu.com/s/13bjRZGORelM1GDvtYIyadw,提取碼:tr1z
解壓程序壓縮包,並對文件夾賦權
Chmod -R 777 Software
Linux命令備忘
開放5672端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
關閉5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent
配置立即生效
firewall-cmd --reload
查看端口占用
netstat -tunlp | grep 5601
安裝Elasticsearch
創建非root用戶
由於elasticsearch不能使用root賬號運行,所以需要先創建普通用戶賬號
adduser es
pssswd es
usermod -aG wheel es
更改配置
config文件夾下的jvm.options用於設置JVM參數,這裏設置一下內存分配
-Xms512m
-Xmx512m
允許遠程訪問
修改config文件夾下的elasticsearch.yml
network.host: 0.0.0.0
配置系統服務
創建系統服務文件
vim /etc/systemd/system/elasticsearch.service
寫入
[Unit]
Description=elasticsearch
[Service]
User=es
ExecStart=/home/Software/elasticsearch-7.4.2/bin/elasticsearch
[Install]
WantedBy=multi-user.target
刷新並配置爲開機自啓動
systemctl daemon-reload
systemctl enable elasticsearch
修改最大打開文件數、最大進程數
參考:https://www.cnblogs.com/linus-tan/p/10276289.html
https://www.jianshu.com/p/1d02c97f3573(重要)
https://blog.csdn.net/jiahao1186/article/details/90235771(重要)
在文件 /etc/security/limits.conf 最後追加
* hard nofile 65536
* soft nofile 65536
在文件 /etc/sysctl.conf 最後追加
vm.max_map_count=65536
執行命令
sysctl -p
如果將elasticsearch註冊爲系統服務,則還需要修改以下文件,否則不能以systemctl命令啓動
vim /etc/systemd/system.conf
vim /etc/systemd/user.conf
在這兩個文件中設置
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
啓動
在程序目錄下執行
sh bin/elasticsearch
如果註冊爲系統服務,可以執行
systemctl start elasticsearch
注意事項
開放端口時,要打開9200-9400所有的端口,因爲elasticsearch不僅僅使用了9200和9300,如果只開放9200、9300端口,那麼spring-data-elasticsearch將無法連接到elasticsearch,並拋出 failed to load elasticsearch nodes 的ERROR級別異常,以及握手超時等DEBUG異常
安裝Logstash
Hello World
解壓後進入logstash根目錄,執行以下命令:
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
執行命令後,終端等待輸入,此時輸入"Hello World"並回車,程序啓動後將輸出:
創建軟連接
ln -s /home/Software/logstash-7.4.2/bin/logstash /bin/
然後就可以直接使用logstash命令,而不用指定安裝路徑
指定配置文件的Hello World
創建logstash.conf文件,筆者放在logstash-7.4.2/confg目錄下,文件內容如下:
input{
stdin{}
}
output{
stdout{
codec => rubydebug{}
}
}
指定配置文件啓動程序,筆者是在config目錄下執行的這條命令
logstash -f logstash.conf
程序啓動後,輸入Hello World,可以看到輸出
配置TCP輸入
修改logstash.conf:
input{
tcp{
port => 50001
mode => "server"
ssl_enable => false
}
}
output{
stdout{
codec => rubydebug{}
}
}
另開一個終端,安裝nc工具,併發送數據
yum install -y nc
nc 192.168.89.181 50001 < /etc/passwd
echo "Hello World" > /dev/tcp/192.168.89.181/50001
在啓動logstash的終端上可以看到輸出
logback配置
引入maven依賴
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.2</version>
</dependency>
在logback.xml中配置appender
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.89.181:50001</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"webapp_ni"}</customFields>
</encoder>
</appender>
啓動appender
<root level="DEBUG">
<appender-ref ref="LOGSTASH"/>
</root>
此時運行springboot程序,在logstash的控制檯上可以看到輸出
配置爲系統服務
在程序bin目錄下執行
sh system-install
這個腳本會將logstash註冊爲系統服務,但是其服務文件實測有問題,需要作如下修改:
vim /etc/systemd/system/logstash.service
[Unit]
Description=logstash
[Service]
User=root
EnvironmentFile=/etc/default/logstash
EnvironmentFile=/etc/sysconfig/logstash
ExecStart=/home/Software/logstash-7.4.2/bin/logstash -f /home/Software/logstash-7.4.2/config/logstash.conf
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384
[Install]
WantedBy=multi-user.target
然後就可以使用以下命令
設置服務自啓動:systemctl enable logstash
啓動服務:systemctl start logstash
停止服務:systemctl stop logstash
重啓服務:systemctl restart logstash
查看服務狀態:systemctl status logstash
配置elasticsearch輸出
編輯config/logstash.conf
input{
tcp{
port => 50001
mode => "server"
ssl_enable => false
}
}
output{
elasticsearch{
action => "index"
hosts => "127.0.0.1:9200"
index => "dss2-log"
}
}
安裝kibana
修改配置文件
修改配置文件config/kibana.yml,這裏需要注意的是server.host只有設置爲"0.0.0.0"時才能遠程訪問,如果設置爲"localhost"或者"127.0.0.1",則只能在本機訪問
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
啓動
kibana默認不允許以root啓動,但是啓動時可以帶參數強制以root啓動
sh kibana --allow-root
配置爲系統服務
cat /etc/systemd/system/kibana.service
[Unit]
After=syslog.target
Description=kibana
[Service]
ExecStart=/home/Software/kibana-7.4.2/bin/kibana --allow-root
[Install]
WantedBy=multi-user.target
通過kibana查看採集到日誌
index匹配好即可,不詳述