整合 ELK stack 作为 SpringBoot 项目日志分析方案

前置准备:

Kibana 7.4.2

Elasticsearch 7.4.2

Logstash 7.4.2

SpringBoot 2.6.13

 

扩展:Docker启动Logstash:

docker run --restart=always -p 4560:4560 -v ~/pipeline/:/usr/share/logstash/pipeline/ --name logstash logstash:7.4.2

配置文件放在:用户主目录/pipeline/logstash.conf

 

1.引入Maven依赖:

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>

 

2.导入Logback配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <springProperty name="application" source="spring.application.name"/>
    <springProperty name="host" source="logstash.host"/>

    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${host}</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"application":"${application}"}</customFields>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="stash" />
    </root>

</configuration>

导入到 src/main/resources/logback-spring.xml  内。

 

3.配置application.yml:

logstash:
  host: 127.0.0.1:4560
spring:
  application:
    name: ELK Demo

 host里的IP改成 Logstash 实际的。

 

4.导入Logstash配置文件:

input {
    tcp {
        port => 4560
        codec => json_lines
    }
}

output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => ["192.168.1.200:9200"]
        # user => "elastic"
        # password => "abc123"
        index => "logstash-%{+YYYY.MM.dd}"
    }
}

hosts 改成 Elasticsearch 实际ip,如果有密码,则取消注释并配置。

 

5.完成:

启动项目,打印的 INFO 级别以上日志都会自动收集到 Elasticsearch 的 logstash-xxxx-xx-xx 索引内,使用 Kibana 创建  可视化、仪表盘,根据需求筛选展示即可。

posted @ 2024-05-21 21:06  Yfeil  阅读(26)  评论(0编辑  收藏  举报