Spring Boot 3/4 可观测落地指南

本文已适配: Spring Boot 3.2.x + Spring Boot 4.0 OpenTelemetry + Micrometer + Prometheus + Jaeger 一套配置打通:指标、链路、日志


前言

微服务架构下,没有可观测性就是"裸奔"。 一次请求跨多个服务,想定位问题? 你需要三件套:

  • Metrics:QPS、RT、错误率、JVM 监控
  • Tracing:分布式调用链、耗时、异常
  • Logging:日志自带 traceId,一键串联

今天给你两套可直接复制到生产的版本: Spring Boot 3 稳定版 / Spring Boot 4 极简官方版。


🚀 一步启动 Jaeger(必看)

直接复制运行,本地立刻拥有链路追踪平台:

bash 复制代码
docker run --rm --name jaeger \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 5778:5778 \
  -p 9411:9411 \
  cr.jaegertracing.io/jaegertracing/jaeger:2.15.0

端口说明:

  • 16686:Jaeger UI 控制台
  • 4317:OTLP gRPC(Spring Boot 3 用)
  • 4318:OTLP HTTP(Spring Boot 4 用)

访问地址: 👉 http://localhost:16686


📌 版本选择速览

  • Spring Boot 4 :用官方 spring-boot-starter-opentelemetry,零兼容问题
  • Spring Boot 3 :用 Micrometer + OTel Bridge,生产最稳

一、Spring Boot 4 接入(官方推荐)

pom.xml

xml 复制代码
<properties>
    <java.version>21</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webmvc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- Prometheus 指标 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>

    <!-- Spring Boot 4 官方 OTel Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-opentelemetry</artifactId>
    </dependency>
</dependencies>

application.yml

yaml 复制代码
spring:
  application:
    name: meteion-spring

management:
  endpoints:
    web:
      exposure:
        include: "health,info,prometheus,metrics"

  tracing:
    sampling:
      probability: 1.0
    export:
      enabled: true

  opentelemetry:
    tracing:
      export:
        otlp:
          endpoint: http://localhost:4318/v1/traces

  endpoint:
    health:
      show-details: always
      probes:
        enabled: true

  metrics:
    tags:
      application: ${spring.application.name}

  prometheus:
    metrics:
      export:
        enabled: true

二、Spring Boot 3 接入(生产稳定版)

pom.xml

xml 复制代码
<properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>

    <!-- Micrometer 与 OpenTelemetry 桥接 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-otel</artifactId>
    </dependency>

    <!-- OTLP 导出器 -->
    <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-exporter-otlp</artifactId>
    </dependency>
</dependencies>

application.yml

yaml 复制代码
spring:
  application:
    name: meteion-spring-boot3

management:
  endpoints:
    web:
      exposure:
        include: "health,info,prometheus,metrics"

  endpoint:
    health:
      show-details: always
      probes:
        enabled: true

  metrics:
    tags:
      application: ${spring.application.name}
      instance: ${HOSTNAME:local}

  tracing:
    enabled: true
    sampling:
      probability: 1.0

  otlp:
    tracing:
      endpoint: http://localhost:4317
      transport: GRPC

  prometheus:
    metrics:
      export:
        enabled: true

# 日志自动打印 traceId/spanId
logging:
  pattern:
    level: "%5p [${spring.application.name:},traceId=%X{traceId:-},spanId=%X{spanId:-}]"

✅ 启动验证

  1. 启动 Jaeger Docker
  2. 启动 Spring Boot 应用
  3. 调用任意接口:curl http://localhost:8080/xxx
  4. 打开 Jaeger UI:http://localhost:16686
  5. 选择服务名 → Find Traces

效果:

  • 完整调用链
  • 每段耗时
  • traceId / spanId 自动生成
  • 异常自动捕获展示

🌐 推荐收藏官方文档


总结

  • Spring Boot 4:官方 Starter,最简配置
  • Spring Boot 3:Micrometer + Bridge,稳定通用
  • 一套配置同时支持:Metrics + Tracing + Log 三位一体
  • 配合 Prometheus + Grafana,直接落地生产可观测平台

本文代码可直接复制使用,欢迎收藏、转发给需要的同学~

相关推荐
阿维的博客日记4 小时前
Hippo4j 线程池监控平台部署手册
java·spring boot·后端
万少6 小时前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
GetcharZp6 小时前
Epic、暴雪都在用的 C++ 界面利器:Dear ImGui 零基础全景指南
后端
pixcarp7 小时前
知识库系统的内容资产闭环怎么设计
服务器·数据库·后端·golang
红尘散仙7 小时前
别再手动录屏了:用 VHS 给终端应用生成会动的文档素材
后端·rust
张忠琳10 小时前
【Go 1.26.4】Golang Select 深度解析
开发语言·后端·golang
IT_陈寒10 小时前
React中useEffect依赖项这个坑我居然踩了三天
前端·人工智能·后端
提笔了无痕11 小时前
如何用Go实现整套RAG流程
开发语言·后端·golang
成都第一深情IZZO11 小时前
事务未提交就发送 MQ,导致消费者读不到订单数据的问题
后端
大橙子打游戏12 小时前
Fable5不能用了,但是依然能让 AI 纯靠截图玩通宝可梦
后端