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

相关推荐
.柒宇.11 分钟前
运维常见面试题_04_Nginx与DNS服务
运维·nginx·面试·dns
铁皮饭盒13 分钟前
DeepSeek V4 Pro 0813发布了, 也可以部署到 Codex 了
前端·javascript·后端
15Moonlight14 分钟前
Linux系统(02):基础开发工具
linux·运维·服务器
沪上企服通35 分钟前
当 RPA 遇见企服:合规链路自动化的技术演进与五类市场样本观察
运维·自动化·rpa
hxhy0043 分钟前
服务器挖矿排查与清理
运维·服务器
苏三说技术1 小时前
推荐一个牛逼的企业智能招聘系统
后端
达达尼昂1 小时前
Flutter AI Harness 如何让 Agent 参与软件开发全流程
android·人工智能·后端
琥珀色糖1 小时前
Linux GDB调试
linux·运维·服务器·gdb·调试
k4m7v2pz1 小时前
Rust 长跑守护进程日志治理:切分、时区与结构化
开发语言·后端·rust·日志系统·日志轮转·ndjson
闲云野鹤在人间2 小时前
项目实战:LNMP-电商平台-ECshop
linux·运维·nginx·apache·lvs