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 中搜索日志,确认字段(如 service、traceId)已正确显示。
注意事项
  • Elasticsearch 8.x 默认开启安全认证,需在 Logstash 配置中添加用户名和密码:

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

相关推荐
DongQiShanRen6 小时前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
归秋1426 小时前
2026企业AI办公工具选型指南:从场景匹配到平台评估
大数据·运维·人工智能
高频因子挖掘机6 小时前
批量行情返回后,怎样把请求失败的股票单独挑出来?
后端·github·api
小蒜学长7 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
well06127 小时前
Linux 文件相关底层知识
linux·运维·服务器
Lsetea7 小时前
OpenSSL verify报CA certificate key too weak:auth_level与弱密钥链排查
运维·https·ssl证书·openssl·证书链
熊猫钓鱼>_>8 小时前
从闲置平板到家里的“控制大脑“:鸿蒙智慧中控面板完整实战
运维·人工智能·华为·自动化·电脑·ai编程·harmonyos
我的div丢了肿么办8 小时前
go语言中管道 channel的使用
后端·go
Harvil_8 小时前
模型点三道菜,回喂被拒 400
后端
DP DPharness8 小时前
浏览器自动化插件时,三个可核对的判断维度
运维·自动化