我们有Jaeger设置来跟踪主要是istio代理之间的调用。我尝试在应用程序内部使用跟踪,在日志中包含任何traceId/spanId,并向Jaeger收集器报告应用程序中创建的任何spans。
我们的大多数微服务仍然运行Sping Boot 2。有些已经升级到Spring Boot 3。
我已经让它在Spring Boot 2中令人满意地工作了。
我包含了以下依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>io.opentracing.brave</groupId>
<artifactId>brave-opentracing</artifactId>
</dependency>
并在应用程序中设置以下内容
spring:
application:
name: our-service
sleuth:
propagation:
type: B3,W3C
opentracing:
enabled: true
zipkin:
base-url: <url to our jaeger collector>:9411
对于我们的spring Boot 3应用程序,我添加了以下依赖项,而不是上面的依赖项:
<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.yaml,但还添加了:
logging:
pattern:
level: "%5p [${spring.application.name},%X{traceId:-},%X{spanId:-}]"
当我在我们的测试环境中运行两个应用程序时,我可以看到traceIds显示在两个应用程序的日志中,我也可以在jaeger UI中找到这些traceIds,包括在SpringBoot 2应用程序中创建的spans。除了应该来自SpringBoot 3应用程序的spanId。该应用程序在日志中具有匹配的traceIds,但我也有以下错误:
2023-03-16T15:36:15.037Z WARN [our-service,,] 1 --- [ender@207ff82c}] z.r.AsyncReporter$BoundedAsyncReporter:由于ResourceAccessException(“http://localhost:9411/api/v2/spans”的POST请求出现I/O错误:连接被拒绝
这让我得出结论,在Sping Boot 3中设置Jaeger收集器的URL的配置应该是不同的,因为它不会拾取我配置的URL,而是使用http://localhost。但我似乎找不到任何地方应该如何配置它。
希望这里的任何人都能帮助我,告诉我我做错了什么。
1条答案
按热度按时间mwngjboj1#
我最近也遇到了同样的问题。在调查过程中,我通过查看Sping Boot actuator endpoint的配置属性输出找到了解决方案:配置属性
输出中提到了一个名为ZipkinProperties的类,所以我在Sping Boot API文档中查找了它:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.html
类
ZipkinConfiguration
中有3个属性:connect-timeout
endpoint
read-timeout
你要找的是属性
management.zipkin.tracing.endpoint