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 => 5044codec => 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 可视化
- 访问
http://localhost:5601打开 Kibana 控制台。 - 进入 Stack Management > Index Patterns,创建索引模式
microservice-logs-*。 - 在 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}" }} }
验证日志链路
- 启动 Spring Boot 应用,生成测试日志。
- 在 Kibana 中搜索日志,确认字段(如
service、traceId)已正确显示。
注意事项
- Elasticsearch 8.x 默认开启安全认证,需在 Logstash 配置中添加用户名和密码:
output {elasticsearch {hosts => ["http://localhost:9200"]user => "elastic"password => "your-password"} } - 生产环境建议使用 Filebeat 替代 Logstash TCP 输入,降低资源消耗。

