如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!

2年前 (2022) 程序员胖胖胖虎阿
202 0 0

松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程


Spring Boot 如何攀上高大上的 ELK?今天松哥手把手教你将 Spring Boot 日志实时输入到 Es 中!

以下是视频笔记:

注意,笔记只是视频内容的一个简要记录,因此笔记内容比较简单,完整的内容可以查看视频。

30.1 Logstash

一个具备实时数据传输能力的管道。它可以将数据从输入端(Spring Boot 日志)传送到输出端(Es)。数据在 Logstash 中传输的过程中,可以加入过滤器 Filter,对数据进行过滤。

30.2 安装

  1. 可以使用 Docker 安装(不推荐)。

  2. 直接安装

2.1 下载 Logstash:https://www.elastic.co/cn/downloads/logstash

2.2 解压下载后的文件。

2.3 在 config 目录下,添加 logstash-springboot.conf 文件,内容如下:

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
filter {

}
output {
  elasticsearch {
    hosts => ["127.0.0.1:9200","127.0.0.1:9201","127.0.0.1:9202"]
    index => "log-javaboy-dev-%{+yyyy.MM.dd}" 
  }
}

2.4 在 config/pipelines.yml 文件中,加载 logstash-springboot.conf 配置文件:

- pipeline.id: log_dev
  path.config: "/Users/sang/workspace/elasticsearch/logstash-7.10.2/config/logstash-springboot.conf"

2.5 启动 Logstash

进入到 bin 目录下,执行 ./logstash 命令启动即可(启动之前确保 Es 已经启动)。看到如下内容表示启动成功:

如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!
image-20210127194524405

30.3 Spring Boot 日志

首先创建一个 Spring  Boot 工程,引入 web 依赖 和 logstash 相关的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.6</version>
</dependency>

然后在 resources 目录下创建 logback-spring.xml 文件(具体参考:Spring Boot 日志各种用法),将日志输出到 logstash 中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <!--应用名称-->
    <property name="APP_NAME" value="logstash"/>
    <!--日志文件保存路径-->
    <property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
    <contextName>${APP_NAME}</contextName>
    <!--每天记录日志到文件appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--输出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>127.0.0.1:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

最后再创建一个 HelloController 用来测试:

@RestController
public class HelloController {
    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
    @GetMapping("/hello")
    public void hello() {
        logger.info("hello logstash!");
    }
}

接下来启动 Spring Boot 工程。

30.4 Kibana

在 Kibana 中,点击创建一个索引规则:

如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!
image-20210127200303006

接下来创建一个索引规则:

如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!
image-20210127200345728

输入索引名称规则:

如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!
image-20210127200431491

然后点击下一步,选择 @timestamp。

最后,在 discover 中可以查看日志信息。

如何优雅的管理 Spring Boot 日志?松哥手把手教你上 ELK!
image-20210127200538746

ElasticSearch 系列其他文章:

  1. 打算出一个 ElasticSearch 教程,谁赞成,谁反对?
  2. ElasticSearch 从安装开始
  3. ElasticSearch 第三弹,核心概念介绍
  4. ElasticSearch 中的中文分词器该怎么玩?
  5. ElasticSearch 索引基本操作
  6. ElasticSearch 文档的添加、获取以及更新
  7. ElasticSearch 文档的删除和批量操作
  8. ElasticSearch 文档路由,你的数据到底存在哪一个分片上?
  9. ElasticSearch 并发的处理方式:锁和版本控制
  10. ElasticSearch 中的倒排索引到底是什么?
  11. ElasticSearch 动态映射与静态映射
  12. ElasticSearch 四种字段类型详解
  13. ElasticSearch 中的地理类型和特殊类型
  14. ElasticSearch 23 种映射参数详解
  15. ElasticSearch 如何配置某个字段的权重?
  16. ElasticSearch 23 种映射参数详解【3】
  17. ElasticSearch 映射模版
  18. ElasticSearch 搜索入门
  19. ElasticSearch 全文搜索怎么玩?
  20. ElasticSearch 打错字还能搜索到?试试 fuzzy query!
  21. ElasticSearch 复合查询,理解 Es 中的文档评分策略!
  22. 想搜索附近评分较高的餐厅,ElasticSearch 大显身手!
  23. ElasticSearch 如何像 MySQL 一样做多表联合查询?
  24. ElasticSearch 地理位置查询与特殊查询
  25. ElasticSearch 搜索高亮与排序
  26. ElasticSearch 指标聚合
  27. ElasticSearch 桶聚合
  28. ElasticSearch 管道聚合
  29. Java 操作 ElasticSearch,so easy!
  30. ElasticSearch Java 高级客户端索引操作~
  31. ElasticSearch Java 高级客户端如何操作索引?
  32. 使用 Java 客户端添加 ElasticSearch 文档
  33. 使用 Java 客户端对 ElasticSearch 文档进行删改查

本文分享自微信公众号 - 江南一点雨(a_javaboy)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

相关文章

暂无评论

暂无评论...