本文已适配: 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:-}]"
✅ 启动验证
- 启动 Jaeger Docker
- 启动 Spring Boot 应用
- 调用任意接口:
curl http://localhost:8080/xxx - 打开 Jaeger UI:http://localhost:16686
- 选择服务名 → Find Traces
效果:
- 完整调用链
- 每段耗时
- traceId / spanId 自动生成
- 异常自动捕获展示

🌐 推荐收藏官方文档
- Jaeger 官方 www.jaegertracing.io/docs/
- OpenTelemetry 官方 opentelemetry.io/docs/
总结
- Spring Boot 4:官方 Starter,最简配置
- Spring Boot 3:Micrometer + Bridge,稳定通用
- 一套配置同时支持:Metrics + Tracing + Log 三位一体
- 配合 Prometheus + Grafana,直接落地生产可观测平台
本文代码可直接复制使用,欢迎收藏、转发给需要的同学~