Spring Boot 配合 ELK 記錄日志

本文介紹了 Spring Boot 2 配合 ELK 實現(xiàn)日志記錄的方法和步驟。


目錄

  • ELK 簡介
  • 開發(fā)環(huán)境
  • 基礎(chǔ)示例
  • 總結(jié)

ELK 簡介

ELK 是 Elastic 公司提供的三個產(chǎn)品組件,配合使用可以完成日志記錄功能。

  • E(ElasticSearch):存儲日志
  • L(Logstash):收集、處理和轉(zhuǎn)發(fā)日志
  • K(Kibana):提供日志檢索功能的 Web 應(yīng)用

有關(guān) ELK 的其它信息請參看:ELK教程


開發(fā)環(huán)境

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

基礎(chǔ)示例

  1. 安裝 ElasticSearch,LogstashKibana。

  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 服務(wù)地址 -->
        <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,執(zhí)行 Create Index Pattern,配置完成后點擊 Discover,選中 Available fields 中的 message,點擊 add,頁面刷新后可以看到上報的日志。
    注意:Create Index Pattern 前確保 Elasticsearch 中有數(shù)據(jù),這樣會自動刷新出 Elasticsearch 中已有的 Index,可以按照提示創(chuàng)建。

注意:本示例 Logback 配置實現(xiàn)日志同步發(fā)送到 Logstash,生產(chǎn)環(huán)境中最好配置異步日志記錄,異步日志配置請參考: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 服務(wù)地址 -->
        <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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容