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

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

相关推荐
Dovis(誓平步青云)5 分钟前
《Linux CPU频率为何忽高忽低:cpufreq、idle状态与性能抖动教程》
linux·运维·服务器·spring boot·后端·生成对抗网络
To_OC7 小时前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
逝水无殇10 小时前
C# 异常处理详解
开发语言·后端·c#
考虑考虑12 小时前
Sentinel安装
java·后端·微服务
IT_陈寒12 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_49212 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
逝水无殇13 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN13 小时前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了13 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器
高明珠14 小时前
麒麟 V10 SP1 排查实录:ttyS5 每 10 秒莫名收到一批报文,元凶是 eGTouchD
后端