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

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

相关推荐
Full Stack Developme4 分钟前
Spring 发展历史
java·后端·spring
ClouGence13 分钟前
TiCDC 够用吗?聊聊 TiDB 同步的几个关键问题
数据库·分布式·后端
音符犹如代码40 分钟前
Docker 一键部署带有 TimescaleDB 插件的 PostgreSQL
java·运维·数据库·后端·docker·postgresql·容器
LucianaiB1 小时前
从模型护栏到工程门禁:基于 XGuard 二创一个 Agent/CI 动态策略安全护栏
后端
铁皮饭盒1 小时前
同样是算力巨头,为什么华为死磕英伟达,AMD 却 "躺平看戏"?
前端·后端
文心快码BaiduComate1 小时前
用Comate 7天完成”鹅鸭杀”游戏网站开发
前端·后端·程序员
倚栏听风雨1 小时前
Spring AI Alibaba 接入 OpenAI 兼容协议第三方大模型实战
后端
夕除1 小时前
spring boot 6
java·spring boot·后端
zhangxingchao1 小时前
AI应用开发二:Embedding与向量数据库
前端·人工智能·后端
倒流时光三十年2 小时前
Java String.split() 方法陷阱:为什么你应该始终使用 split(regex, -1)
后端