🎓博主介绍:Java、Python、js全栈开发 “多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。
📖DeepSeek-行业融合之万象视界(附实战案例详解100+)
📖全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)
👉感兴趣的可以先收藏起来,希望帮助更多的人
在这里插入图片描述

企业级日志管理:Spring Boot + ELK 实时日志监控系统搭建

一、引言

在企业级应用开发中,日志管理是至关重要的一环。有效的日志管理不仅有助于开发人员快速定位和解决问题,还能为系统的性能优化和安全审计提供有力支持。Spring Boot 作为当前流行的 Java 开发框架,以其简洁的配置和快速开发的特性受到广泛青睐。而 ELK 栈(Elasticsearch、Logstash、Kibana)则是一套强大的日志管理和分析工具,能够实现日志的收集、存储、搜索和可视化。本文将详细介绍如何搭建一个基于 Spring Boot 和 ELK 的实时日志监控系统。

二、ELK 栈简介

2.1 Elasticsearch

Elasticsearch 是一个分布式的搜索和分析引擎,它基于 Lucene 构建,提供了强大的全文搜索和数据分析能力。Elasticsearch 以 JSON 格式存储数据,支持分布式存储和水平扩展,能够处理海量数据。

2.2 Logstash

Logstash 是一个数据收集和处理工具,它可以从各种数据源(如文件、数据库、网络等)收集日志数据,并对数据进行过滤、转换和格式化,最后将处理后的数据发送到 Elasticsearch 中存储。

2.3 Kibana

Kibana 是一个可视化工具,它与 Elasticsearch 集成,提供了直观的用户界面,用于搜索、分析和可视化 Elasticsearch 中的数据。通过 Kibana,我们可以创建各种图表、报表和仪表盘,实时监控系统的运行状态。

三、搭建 ELK 环境

3.1 安装 Elasticsearch

  1. 下载 Elasticsearch
    从 Elasticsearch 官方网站(https://www.elastic.co/downloads/elasticsearch)下载适合你操作系统的 Elasticsearch 版本。
  2. 解压并启动 Elasticsearch
    将下载的压缩包解压到指定目录,然后进入解压后的目录,执行以下命令启动 Elasticsearch:
./bin/elasticsearch
  1. 验证 Elasticsearch 启动
    打开浏览器,访问 http://localhost:9200,如果看到类似以下的 JSON 数据,则说明 Elasticsearch 启动成功:
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "abcdef1234567890",
  "version" : {
    "number" : "7.17.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "123456789abcdef",
    "build_date" : "2022-03-29T09:02:48.751718776Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

3.2 安装 Logstash

  1. 下载 Logstash
    从 Logstash 官方网站(https://www.elastic.co/downloads/logstash)下载适合你操作系统的 Logstash 版本。
  2. 解压 Logstash
    将下载的压缩包解压到指定目录。
  3. 配置 Logstash
    在 Logstash 解压目录下创建一个配置文件 logstash.conf,内容如下:
input {
  tcp {
    port => 5000
    codec => json_lines
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "springboot_logs-%{+YYYY.MM.dd}"
  }
}

这个配置文件表示 Logstash 监听 5000 端口,接收 JSON 格式的日志数据,并将数据发送到 Elasticsearch 中,索引名为 springboot_logs-YYYY.MM.dd
4. 启动 Logstash
在 Logstash 解压目录下执行以下命令启动 Logstash:

./bin/logstash -f logstash.conf

3.3 安装 Kibana

  1. 下载 Kibana
    从 Kibana 官方网站(https://www.elastic.co/downloads/kibana)下载适合你操作系统的 Kibana 版本。
  2. 解压并启动 Kibana
    将下载的压缩包解压到指定目录,然后进入解压后的目录,执行以下命令启动 Kibana:
./bin/kibana
  1. 验证 Kibana 启动
    打开浏览器,访问 http://localhost:5601,如果看到 Kibana 的登录界面,则说明 Kibana 启动成功。

四、Spring Boot 项目集成 Logback 和 Logstash

4.1 创建 Spring Boot 项目

可以使用 Spring Initializr(https://start.spring.io/)创建一个新的 Spring Boot 项目,添加 Spring Web 依赖。

4.2 添加 Logback 和 Logstash 依赖

pom.xml 中添加以下依赖:

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

4.3 配置 Logback

src/main/resources 目录下创建 logback-spring.xml 文件,内容如下:

<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpAppender">
        <destination>localhost:5000</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"app_name": "springboot-elk-demo"}</customFields>
        </encoder>
    </appender>

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

这个配置文件表示将日志数据以 JSON 格式发送到 Logstash 的 5000 端口。

4.4 编写测试代码

在 Spring Boot 项目中编写一个简单的控制器类,用于测试日志输出:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);

    @GetMapping("/hello")
    public String hello() {
        logger.info("Hello, ELK!");
        return "Hello, ELK!";
    }
}

4.5 启动 Spring Boot 项目

运行 Spring Boot 项目,访问 http://localhost:8080/hello,此时日志数据将被发送到 Logstash,再由 Logstash 转发到 Elasticsearch。

五、Kibana 可视化配置

5.1 创建索引模式

打开 Kibana 控制台,点击左侧导航栏的 Management -> Stack Management -> Index Patterns,点击 Create index pattern
Index pattern name 输入框中输入 springboot_logs-*,然后点击 Next step。选择 @timestamp 作为时间字段,最后点击 Create index pattern

5.2 创建可视化图表

点击左侧导航栏的 Visualize -> Create visualization,选择合适的图表类型(如柱状图、折线图等),配置图表的数据源和显示方式,最后保存图表。

5.3 创建仪表盘

点击左侧导航栏的 Dashboard -> Create dashboard,将之前创建的可视化图表添加到仪表盘上,调整图表的布局和大小,完成仪表盘的创建。

六、总结

通过以上步骤,我们成功搭建了一个基于 Spring Boot 和 ELK 的实时日志监控系统。该系统能够实时收集、存储和分析 Spring Boot 应用的日志数据,并通过 Kibana 进行可视化展示。在企业级应用中,这种日志管理系统可以帮助开发人员快速定位和解决问题,提高系统的稳定性和可靠性。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐