美文网首页java 设计运营相关springboot
Spring Boot 配合 ELK 记录日志

Spring Boot 配合 ELK 记录日志

作者: 又语 | 来源:发表于2019-12-03 15:26 被阅读0次

本文介绍了 Spring Boot 2 配合 ELK 实现日志记录的方法和步骤。


目录

  • ELK 简介
  • 开发环境
  • 基础示例
  • 总结

ELK 简介

ELK 是 Elastic 公司提供的三个产品组件,配合使用可以完成日志记录功能。

  • E(ElasticSearch):存储日志
  • L(Logstash):收集、处理和转发日志
  • K(Kibana):提供日志检索功能的 Web 应用

有关 ELK 的其它信息请参看:ELK教程


开发环境

  • Oracle JDK 1.8.0_201
  • Apache Maven 3.6.0
  • IntelliJ IDEA (Version 2018.3.3)

基础示例

  1. 安装 ElasticSearchLogstashKibana

  2. 在 Logstash bin 目录下新增配置文件 logstash_tcp.conf,重启 Logstash(参考:CentOS 7.x 安装 Logstash 6.x)。

input {
  tcp {
    host => "0.0.0.0"
    mode => "server"
    port => 9600
    codec => "json"
  }
}

output {
  elasticsearch {
    hosts => "127.0.0.1:9200"
    index => "tcp-%{+YYYY.MM.dd}"
  }
}

说明:

  1. 修改 Kibana 配置文件 config/kibana.yml,添加 elasticsearch.url: "http://127.0.0.1:9200",重启 Kibana(参考:CentOS 7.x 安装 Kibana 6.x

  2. 修改需要配合 ELK 记录日志的工程,在 pom.xml 中添加 logstash-logback-encoder 依赖。

<dependency>
  <groupId>net.logstash.logback</groupId>
  <artifactId>logstash-logback-encoder</artifactId>
  <version>6.2</version>
</dependency>
  1. 修改 Logback 配置文件,添加 net.logstash.logback.appender.LogstashTcpSocketAppender
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36}: %msg%n"/>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 配置 Logstash 服务地址 -->
        <destination>[Logstash IP]:9600</destination>
        <!-- 日志输出编码 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>
  1. 登录 Kibana Web 管理页面 IP:5601,执行 Create Index Pattern,配置完成后点击 Discover,选中 Available fields 中的 message,点击 add,页面刷新后可以看到上报的日志。
    注意:Create Index Pattern 前确保 Elasticsearch 中有数据,这样会自动刷新出 Elasticsearch 中已有的 Index,可以按照提示创建。

注意:本示例 Logback 配置实现日志同步发送到 Logstash,生产环境中最好配置异步日志记录,异步日志配置请参考:Logback 异步日志配置

异步日志配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36}: %msg%n"/>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 配置 Logstash 服务地址 -->
        <destination>[Logstash IP]:9600</destination>
        <!-- 日志输出编码 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"></encoder>
    </appender>
    <!-- 异步日志记录 -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <appender-ref ref="LOGSTASH"/>
    </appender>
    <root level="INFO">
        <appender-ref ref="ASYNC"/>
    </root>
</configuration>

相关文章

网友评论

    本文标题:Spring Boot 配合 ELK 记录日志

    本文链接:https://www.haomeiwen.com/subject/tpwcgctx.html