Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志

Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志

Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志实战微服务

环境准备

确保已安装以下组件:

  • JDK 17+
  • Spring Boot 3.x
  • Spring Cloud Alibaba 2025.0.0
  • Elasticsearch 8.x
  • Logstash 8.x
  • Kibana 8.x
  • Docker(可选,用于快速部署ELK)

Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志实战微服务

引入依赖

在项目的pom.xml中添加必要的依赖:

xml 复制代码
<!-- Spring Cloud Alibaba Nacos 服务发现(可选) -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2025.0.0</version>
</dependency>

<!-- Logback 日志依赖 -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>

<!-- Logstash 日志收集 -->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.4</version>
</dependency>

Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志实战微服务

配置 Logback 输出到 Logstash

src/main/resources下创建logback-spring.xml,配置日志输出到 Logstash:

xml 复制代码
<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:5044</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"service":"your-service-name"}</customFields>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>
配置 Logstash 管道

创建 Logstash 配置文件logstash.conf,将日志转发到 Elasticsearch:

plaintext 复制代码
input {
    tcp {
        port => 5044
        codec => json_lines
    }
}
filter {
    # 可添加自定义过滤规则(如解析特定字段)
}
output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "microservice-logs-%{+YYYY.MM.dd}"
    }
}
启动 ELK 服务

通过 Docker 快速启动 ELK 服务:

bash 复制代码
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.12.0
docker run -d -p 5044:5044 -v /path/to/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:8.12.0
docker run -d -p 5601:5601 kibana:8.12.0
配置 Kibana 可视化
  1. 访问 http://localhost:5601 打开 Kibana 控制台。
  2. 进入 Stack Management > Index Patterns ,创建索引模式 microservice-logs-*
  3. Discover 中查看实时日志数据,或通过 Dashboard 创建可视化图表。
高级配置(可选)
  • 日志字段增强:在 Logback 配置中添加自定义字段(如链路追踪ID):

    xml 复制代码
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <customFields>{"traceId":"%mdc{traceId}"}</customFields>
    </encoder>
  • 日志过滤:在 Logstash 中通过 Grok 解析复杂日志格式:

    plaintext 复制代码
    filter {
        grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{DATA:thread} %{DATA:class} - %{GREEDYDATA:log}" }
        }
    }
验证日志链路
  1. 启动 Spring Boot 应用,生成测试日志。
  2. 在 Kibana 中搜索日志,确认字段(如 servicetraceId)已正确显示。
注意事项
  • Elasticsearch 8.x 默认开启安全认证,需在 Logstash 配置中添加用户名和密码:

    plaintext 复制代码
    output {
        elasticsearch {
            hosts => ["http://localhost:9200"]
            user => "elastic"
            password => "your-password"
        }
    }
  • 生产环境建议使用 Filebeat 替代 Logstash TCP 输入,降低资源消耗。

相关推荐
copyer_xyf几秒前
FastAPI 项目骨架搭建
前端·后端·python
tiannian12206 分钟前
资产管理从手工到智能:三种技术路径的优劣与适用场景
运维·rfid·资产管理系统
_codemonster11 分钟前
传统模式 vs DevOps 模式
运维·devops
laowangpython12 分钟前
tokio-rstracing:Rust 可观测性的标准答案
开发语言·后端·其他·rust
IT_陈寒14 分钟前
Python虚拟环境的这个坑,我居然绕了三天才爬出来
前端·人工智能·后端
我登哥MVP16 分钟前
SpringCloud 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
vortex519 分钟前
Linux 传统设计哲学:通过调用名区分行为的艺术
linux·运维·网络
Oneslide21 分钟前
Claude Code 插件完全指南:安装与技能大全
后端
摇滚侠25 分钟前
SpringMVC 入门到实战 异常处理 83-85
java·后端·spring·maven·intellij-idea
Gong-Yu29 分钟前
MySQL数据库运维——性能优化进阶2️⃣
运维·数据库·mysql·性能优化