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

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

相关推荐
henujolly13 小时前
go学习day two
后端
AI袋鼠帝13 小时前
腾讯这只小程序Agent🦀,帮我找到了最强日程、文件、知识管理姿势
后端
努力的小郑13 小时前
突发!Claude Code 51万行源码全网裸奔:一场史诗级“开源”事故,国内大厂笑麻了
前端·后端·ai编程
HashTang14 小时前
Claude Code 源码中 REPL.tsx 深度解析:一个 5005 行 React 组件的架构启示
前端·后端·ai编程
thatway198914 小时前
ARM TFM-1介绍及代码下载运行适配
后端
千寻girling15 小时前
不知道 Java 全栈 + AI 编程有没有搞头 ?
前端·人工智能·后端
小码哥_常15 小时前
Spring Boot 实现网络限速:让流量“收放自如”
后端
johnrui16 小时前
SpringBoot-JdbcTemplate
java·spring boot·后端
Victor35617 小时前
MongoDB(72)如何创建用户和角色?
后端
Victor35617 小时前
MongoDB(71)如何启用MongoDB身份验证?
后端