我有pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-reporter-brave</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-sender-kafka</artifactId>
</dependency>
因此,Micrometer 创建traceId,将其发送到kafka 主题,然后zipkin 从kafka 主题获取它。
但是在普罗米修斯中我有一个错误: 指标名称http_server_requests_seconds_count不支持示例
它在 spring-boot 2.x 中工作。如果排除 zipkin 和 Brave 依赖项,则可以工作。
首先,请不要定义由 Boot 定义的版本,同时
micrometer-tracing
会被 micrometer-tracing-bridge-brave
拉入,以便您可以从 POM 中删除 micrometer-tracing
依赖项。
您似乎正在使用不受支持的版本的 Prometheus 服务器。 #11982 中添加了对所有时间序列的示例支持。已于Prometheus 2.43.0发布,请升级。
如果你想破解这个(请不要这样做,而是使用受支持的 Prometheus 版本),如果你创建一个
SpanContextSupplier
@Bean
总是显示 isSampled
false
并且它返回 null
spanId
和 traceId
,您将看不到那些范例。
在 Spring Boot 3.3.0 和 Micrometer 1.13.0 中,我们添加了对 Prometheus 1.x Java 客户端的支持,该客户端支持在所有时间序列上有条件地启用示例(即:
_count
),请参阅 Micrometer 中的PrometheusConfig
,以便您可以禁用此功能。