centos7下安裝ELK stack及整合springboot+logback

 

下載ELK

Linux命令備忘

安裝Elasticsearch

創建非root用戶

更改配置

允許遠程訪問 

配置系統服務

修改最大打開文件數、最大進程數

啓動

注意事項

安裝Logstash

Hello World

創建軟連接

指定配置文件的Hello World

配置TCP輸入

logback配置

配置爲系統服務

配置elasticsearch輸出

安裝kibana

修改配置文件

啓動

配置爲系統服務

通過kibana查看採集到日誌



下載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匹配好即可,不詳述

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章