首页 > 其他分享 >Spring Boot 整合 ELK 全面指南:实现日志采集、分析与可视化

Spring Boot 整合 ELK 全面指南:实现日志采集、分析与可视化

时间:2024-11-22 19:18:28浏览次数:3  
标签:ELK Spring Boot Kibana Elasticsearch 日志 Logstash


一、ELK简介

1.1 什么是ELK?

ELK 是三个开源工具的组合:

  1. Elasticsearch:一个分布式全文搜索和分析引擎,用于存储和查询日志数据。
  2. Logstash:一个数据处理管道工具,用于收集、解析和处理日志数据。
  3. Kibana:一个可视化工具,用于以图表和仪表盘的形式展示日志数据。

这三者相互协作,为开发者和运维人员提供了强大的日志管理能力。


1.2 ELK 的核心功能

  • 日志收集与处理:通过 Logstash 或 Filebeat 收集和清洗日志数据。
  • 全文搜索与分析:利用 Elasticsearch 的强大搜索功能快速定位问题。
  • 数据可视化:Kibana 提供丰富的图表工具,将日志数据转化为易于理解的仪表盘。

二、整合目标与架构设计

2.1 整合目标

在本文中,我们将实现以下功能:

  1. 日志采集:Spring Boot 应用生成的日志自动传输至 Logstash。
  2. 日志存储:Logstash 将日志发送到 Elasticsearch 进行存储。
  3. 日志可视化:在 Kibana 中配置仪表盘,实现日志查询和监控。

2.2 架构设计

整合的架构如下:

  1. Spring Boot:产生日志,格式为 JSON 或普通文本。
  2. Logstash:从文件或网络输入接收日志数据,清洗并转发到 Elasticsearch。
  3. Elasticsearch:存储和索引日志数据。
  4. Kibana:连接 Elasticsearch,用于查询和展示数据。

三、环境准备

3.1 安装 ELK 环境

1. 下载 ELK

从官方 Elastic 网站下载 ElasticsearchLogstashKibana

2. 安装与启动

以 Linux 为例:

# 启动 Elasticsearch
./bin/elasticsearch
# 启动 Logstash
./bin/logstash -f <logstash-config-file>
# 启动 Kibana
./bin/kibana

注意:默认端口

  • Elasticsearch: 9200
  • Kibana: 5601

3.2 Spring Boot 项目依赖

确保 Spring Boot 项目中引入以下依赖:

<dependencies>
    <!-- Spring Boot 核心依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- Spring Boot 日志支持 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
    <!-- ELK 日志集成工具(可选) -->
    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>7.4</version>
    </dependency>
</dependencies>

四、实现日志采集与整合

4.1 配置 Spring Boot 日志

使用 Logback 作为日志框架,将日志输出为 JSON 格式。

修改 logback-spring.xml

创建或编辑项目中的 src/main/resources/logback-spring.xml

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:5044</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>

说明LOGSTASH Appender 将日志发送到 Logstash 的 5044 端口。


4.2 配置 Logstash

创建 Logstash 配置文件 logstash.conf

input {
  tcp {
    port => 5044
    codec => json
  }
}
filter {
  # 自定义过滤规则
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "spring-boot-logs-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}

启动 Logstash:

./bin/logstash -f logstash.conf

4.3 配置 Elasticsearch

启动 Elasticsearch,并确保可以通过 http://localhost:9200 访问。

验证集群状态:

curl -X GET "localhost:9200/_cluster/health?pretty"

4.4 配置 Kibana

http://localhost:5601 打开 Kibana:

  1. 进入 Management > Index Patterns
  2. 创建索引模式:spring-boot-logs-*
  3. 设置时间字段:@timestamp
  4. 保存并进入 Discover 查看日志数据。

五、日志可视化与查询

5.1 创建仪表盘

  1. 进入 Dashboard
  2. 添加图表,如:
    • 日志数量趋势图。
    • 错误日志分布图。
    • 日志级别统计图。

5.2 编写查询语句

Kibana 支持类似 SQL 的查询语句:

  • 查询所有错误日志:
    level: "ERROR"
    
  • 按时间范围查询:
    @timestamp >= "2024-01-01T00:00:00" AND @timestamp <= "2024-01-31T23:59:59"
    

六、整合过程中的问题与优化

6.1 常见问题

  1. 日志未能成功发送到 Logstash

    • 检查 Logback 配置中的 Logstash 地址是否正确。
    • 检查 Logstash 是否正常运行。
  2. Elasticsearch 索引未创建

    • 确保 Logstash 配置文件的 output 部分正确。
    • 检查 Elasticsearch 服务状态。
  3. Kibana 无法显示日志

    • 确保索引模式设置正确。
    • 检查 Kibana 与 Elasticsearch 的连接状态。

6.2 优化建议

  1. 日志异步发送:减少日志发送对应用性能的影响。
  2. 日志分级:根据不同级别的日志输出到不同的索引。
  3. 数据归档:定期清理旧日志,降低 Elasticsearch 存储压力。

七、总结

本文全面介绍了 Spring Boot 与 ELK 的整合过程,包括环境准备、配置实现和日志可视化的具体步骤。通过 ELK 的强大功能,开发者可以轻松管理日志,提升系统的可观测性和运维效率。

ELK 是一个高度灵活的日志解决方案,但在实际应用中,需要根据项目需求灵活调整配置。如果您正在寻找一个强大的日志管理工具,ELK 是一个值得选择的方案。

希望本文对您有所帮助,如有问题,欢迎留言讨论!

标签:ELK,Spring,Boot,Kibana,Elasticsearch,日志,Logstash
From: https://blog.csdn.net/fudaihb/article/details/143872567

相关文章

  • Spring Boot 和 Spring Cloud 构建一个完整的微服务架构——在线购物系统
    接上一篇博客,大家可以结合一起看看实例理解https://blog.csdn.net/speaking_me/article/details/143917383?spm=1001.2014.3001.5502构建一个综合性的大型微服务项目可以帮助开发者更全面地理解和掌握SpringBoot和SpringCloud的应用。接下来,我将通过一个具体的例子——......
  • 基于SprinBoot+vue的物业管理系统(源码+数据库+文档)
    物业管理系统基于SprinBoot+vue的物业管理系统一、前言二、系统设计三、系统功能设计 系统登录实现后台模块实现管理员模块实现物业管理模块实现业主模块实现维修员模块实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • 基于java+springboot的社区邻里服务平台系统
    基于Java+SpringBoot的社区邻里服务平台系统,充分发挥技术优势构建便捷交流空间。SpringBoot后端有力支撑,妥善存储居民信息,包含姓名、联系方式、居住楼号等,高效管理各类服务板块,如二手物品交易,居民可发布闲置物品详情与期望价格;家政服务对接,展示家政人员信息与服务范......
  • SpringBoot多数据源开发
    前言在企业级开发中,多数据源是一种常见的技术方案。在面对复杂的业务场景时,通常会对数据库进行横向和纵向的拆分。横向拆分如读写分离,通过主从复制的方式减轻主库的读压力;纵向拆分则是按模块拆分数据库,提升单库性能。在SpringBoot项目中,怎么实现多数据源支持?一起通过案例......
  • PbootCMS其它格式化标签
    [list:contentdropblank=1][list:contentdecode=1][list:pricedecimal=2][list:sizeunit=mb][list:visitsoperate=+1000][list:ioperate=%2][list:fieldslfield="title,content"][search:titlemark=1]使用说明:去除空白字符:dropblank=1,去除空白字符,如换行符、制......
  • 【附源码】springboot贫困地区儿童资助系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 企业人才引进服务平台设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 校园导航微信小程序设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 网上订餐系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • 【附源码】springboot 校园跑腿管理系统设计与实现
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......