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 输入,降低资源消耗。

相关推荐
大阿明4 小时前
Spring Boot(快速上手)
java·spring boot·后端
墨香幽梦客5 小时前
API集成技术规范:RESTful与GraphQL在企业系统对接中的应用对比
后端·restful·graphql
todoitbo5 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
刀法如飞6 小时前
AI编程时代,为什么35岁以上程序员会更吃香?
人工智能·后端·ai编程
小码哥_常6 小时前
Spring Boot 遇上 HMAC-SHA256,API 安全大升级!
后端
Sylvia-girl6 小时前
Linux下的基本指令1
linux·运维·服务器
小码哥_常6 小时前
10分钟极速掌握!SpringBoot+Vue3整合SSE实现实时消息推送
后端
CDN3607 小时前
360CDN SDK 游戏盾:轻量化接入 + 强防护实测
运维·游戏·网络安全
Stewie121387 小时前
Docker 面试题
运维·docker·容器
大黄说说7 小时前
深入 Go 语言 GMP 调度模型:高并发的秘密武器
后端