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,直接落地生产可观测平台

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

相关推荐
杨凯凡6 小时前
【021】反射与注解:Spring 里背后的影子
java·后端·spring
Ares-Wang6 小时前
Flask》》 Flask-Bcrypt 哈希加密
后端·python·flask
小码哥_常6 小时前
Spring Boot项目大变身:为何要拆成这六大模块?
后端
码事漫谈8 小时前
兵临城下:DeepSeek-V4 的技术突围与算力“成人礼”
后端
三水不滴9 小时前
SpringAI + SpringDoc + Knife4j 构建企业级智能问卷系统
经验分享·spring boot·笔记·后端·spring
玖玖passion10 小时前
Windows 上部署 Hermes Agent 完整指南 - 让你的 AI 助手在 WSL2 中跑起来
前端·后端·github
Undoom11 小时前
【腾讯位置服务开发者征文大赛】基于YOLOv8与腾讯地图的视障辅助Android应用——从模型训练到端侧部署全链路实践
后端
ltl11 小时前
【大模型基础设施工程】03:CUDA 生态——cuBLAS、cuDNN、NCCL、Triton、CUTLASS
后端
wan_jm11 小时前
Go Web 开发提速 3(gos):Filter 实战与变量注入 —— 通用逻辑复用与依赖解耦
后端