核心是用docker-compose.yml统一编排Jaeger、Prometheus、Grafana及微服务,确保网络互通、依赖合理、端口映射正确、配置挂载到位,通过一条docker-compose up -d命令即可拉起全链路追踪监控看板。

用 Docker Compose 一键拉起微服务全链路追踪监控看板,核心是把 服务应用、追踪后端(如 Jaeger / Zipkin)、指标采集(Prometheus)、可视化(Grafana) 和 日志聚合(可选 Loki + Promtail) 这几类组件通过一个 docker-compose.yml 统一编排,并确保它们网络互通、配置对齐、启动顺序合理。
关键组件选型与职责对齐
推荐轻量但生产可用的组合:
- Jaeger:作为分布式追踪系统,提供 UI 查看调用链、耗时、错误标记;用 all-in-one 镜像快速启动(开发/测试够用)
-
Prometheus:拉取各服务暴露的
/actuator/metrics或/metrics(Spring Boot / Micrometer),也抓取 Jaeger、Grafana 自身指标 - Grafana:接入 Prometheus 数据源,预装微服务通用看板(如 HTTP QPS、延迟 P95、JVM 内存、Span 数量)
-
微服务示例(如 order-service、user-service):需集成
micrometer-tracing+jaeger-exporter,并暴露/actuator/prometheus
docker-compose.yml 核心配置要点
注意四点:网络统一、依赖声明、端口映射、配置挂载。
- 所有服务定义在同一个
default网络下(或显式声明networks),避免跨网段通信失败 - 用
depends_on声明启动顺序(如 Grafana 依赖 Prometheus),但注意它不等待就绪,需配合健康检查或启动脚本重试 - Jager UI 默认暴露
16686,Prometheus9090,Grafana3000,记得映射到宿主机 - Prometheus 配置文件(
prometheus.yml)需挂载进容器,其中scrape_configs要写清各服务的 target 地址(用服务名,如http://order-service:8080/actuator/prometheus)
服务端埋点与上报配置示例(Spring Boot)
以 Maven 为例,在 pom.xml 加入:
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency>
并在 application.yml 中启用:
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,threaddump
endpoint:
prometheus:
show-details: always
<p>spring:
zipkin:
base-url: <a href="https://www.php.cn/link/9b641f6563e65b18260beb0fdf342957">https://www.php.cn/link/9b641f6563e65b18260beb0fdf342957</a>
sleuth:
sampler:
probability: 1.0 # 开发期全采样,上线调低注意:base-url 指向的是 Compose 内部服务名 jaeger,不是 localhost。
一键启动与验证流程
执行以下命令即可拉起整套环境:
docker-compose up -d
验证步骤:
- 访问
http://localhost:16686查看 Jaeger UI,发起几次服务调用后应出现 trace 列表 - 访问
http://localhost:9090/targets,确认所有 service 的 scrape 状态为 UP - 访问
http://localhost:3000,导入预置看板(如 ID=13073 的 “Micrometer JVM” 或自定义微服务看板) - 调用一次 API(如
curl http://localhost:8080/api/order),观察 Grafana 中延迟曲线、Jaeger 中完整调用链是否实时更新
若某环缺失,优先查容器日志:docker-compose logs jaeger、docker-compose logs prometheus,常见问题包括网络不通、target 地址写错、服务未暴露 metrics 端点。

















