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中添加必要的依赖:

<!-- 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:

<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:

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

通过 Docker 快速启动 ELK 服务:

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):

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

    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 配置中添加用户名和密码:
    output {
        elasticsearch {
            hosts => ["http://localhost:9200"]
            user => "elastic"
            password => "your-password"
        }
    }
  • 生产环境建议使用 Filebeat 替代 Logstash TCP 输入,降低资源消耗。

在这里插入图片描述

posted @ 2026-01-24 17:08  yangykaifa  阅读(7)  评论(0)    收藏  举报