prometheus 不直接采集分布式链路追踪数据,而是通过 tracing 系统 exporter、opentelemetry collector 聚合或应用层 micrometer 埋点,将链路统计指标(如 span 数、耗时、错误率)以 prometheus 可采集的时序格式暴露,实现对链路健康状态的监控与告警。

Prometheus 本身不直接采集分布式链路追踪(Tracing)数据,比如请求经过哪些服务、每个环节耗时多少、是否存在异常跨度(span)等。它专注的是指标(Metrics)监控——即时间序列数值型数据,如 QPS、延迟 P99、错误率、JVM 内存使用量等。
要实现对微服务架构链路指标的监控,需要把链路追踪系统(如 Jaeger、Zipkin、SkyWalking)产生的聚合统计结果,以 Prometheus 可采集的格式暴露出来。换句话说:Prometheus 不抓 trace,但可以监控 trace 系统输出的“链路健康摘要”。
以下是实际可行的三类做法:
1. 通过 Tracing 系统的 Exporter 暴露链路统计指标
主流链路追踪系统都提供 Prometheus 兼容的 metrics 接口或配套 Exporter:
-
Jaeger:官方
jaeger-collector默认暴露/metrics,含以下典型指标:-
jaeger_collector_spans_received_total{transport="thrift_udp"} -
jaeger_collector_span_processing_duration_seconds_bucket -
jaeger_collector_queue_length(队列积压,反映采样/处理瓶颈)
-
-
Zipkin:需启用 Prometheus reporter(v2.20+),或通过
zipkin-prometheussidecar 暴露指标,如:zipkin_collector_accepted_spans_totalzipkin_collector_dropped_spans_total
-
SkyWalking:OAP server 原生支持
/prometheus端点,直接返回服务拓扑、SLA、响应时间、慢服务等预聚合指标,例如:service_sla{service="order-service"}service_resp_time_percentile{service="user-service",percentile="p95"}
✅ 建议:在 Prometheus 的 scrape_configs 中添加对应 collector 或 OAP 地址,即可像监控其他服务一样拉取链路系统的运行态指标。
2. 利用 OpenTelemetry Collector 统一转换与导出
如果你使用 OpenTelemetry(OTel)作为统一遥测管道,可配置 OTel Collector 的 prometheus exporter,将 trace 数据按维度聚合为指标:
- 启用
spanmetricsprocessor(官方扩展处理器),自动按service.name、span.kind、http.status_code等标签生成:span_duration_millis_count{service="payment",status_code="200"}span_duration_millis_sum{service="auth",span_kind="server"}
- 再通过
prometheusexporter将这些指标暴露在本地/metrics,由 Prometheus 抓取。
✅ 这种方式更灵活,支持自定义聚合维度和延迟计算逻辑,适合需要深度定制链路 SLI(如“下单链路端到端 P99
3. 在应用层埋点 + Micrometer + 自定义链路指标
Spring Boot 微服务可通过 Micrometer + OpenTelemetry SDK,在关键业务路径中手动记录链路相关指标:
// 记录某次核心链路(如 createOrder)的端到端耗时分布
Timer.builder("order.create.duration")
.tag("stage", "end-to-end")
.register(meterRegistry)
.record(() -> { /* 执行下单逻辑 */ });
// 记录跨服务调用失败次数(基于 span 异常标记)
Counter.builder("order.create.failures")
.tag("cause", "inventory-unavailable")
.register(meterRegistry);
这些指标会自动通过 /actuator/prometheus 暴露,Prometheus 可直接采集,并用 PromQL 做链路级分析:
histogram_quantile(0.95, sum(rate(order_create_duration_seconds_bucket[1h])) by (le))
⚠️ 注意:这类指标是“链路结果指标”,不是原始 trace 数据;但它能回答最关键的运维问题——这条链路快不快?稳不稳?哪一环经常挂?
Prometheus 监控链路指标的本质,是把分布式追踪的可观测性结果转化为可查询、可告警、可趋势分析的时序指标。不需要替代 Jaeger 或 SkyWalking,而是让它们的能力被 Prometheus 生态(Grafana 展示、Alertmanager 告警、PromQL 下钻)真正用起来。











