一、spring boot客户端
1、在spring boot的项目pom.xml添加依赖
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-web-autoconfigure</artifactId>
<version>0.0.4</version>
</dependency>
<!--添加jaeger-->
<dependency>
<groupId>com.uber.jaeger</groupId>
<artifactId>jaeger-core</artifactId>
<version>0.21.0</version>
</dependency>
注入jaeger bean
@Bean
public io.opentracing.Tracer jaegerTracer() {
return new Configuration("spring-boot", new Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1),
new Configuration.ReporterConfiguration())
.getTracer();
其中需要指定jaeger IP地址,默认是localhost
如果要修改地址
Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1, "jaeger IP地址:端口")
Configuration.ReporterConfiguration(
false,
"jaeger agent host",
"jaeger agent port(int)",
1000,
100)
编写测试 HelloController.java
@RestController
public class HelloController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/hello")
public String hello() {
return "Hello from Spring Boot!";
}
@RequestMapping("/chaining")
public String chaining() {
ResponseEntity<String> response = restTemplate.getForEntity("http://localhost:8080/hello", String.class);
return "Chaining + " + response.getBody();
}
}
运行jaeger,以docker形式运行
docker run --rm -it --network=host jaegertracing/all-in-one
访问:http://localhost:16686查看ui页面
运行spring boot程序
访问:http://localhost:8080/hello 和 http://localhost:8080/chaining
查看UI页面,可以看到
二、如果是spring cloud程序
则替换maven
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-cloud-starter</artifactId>
<version>0.0.4</version>
</dependency>
<!--添加jaeger-->
<dependency>
<groupId>com.uber.jaeger</groupId>
<artifactId>jaeger-core</artifactId>
<version>0.21.0</version>
</dependency>
同样方式运行
- Spring Web (RestControllers, RestTemplates)
- Async annotation, AsyncWebTask, Executors
- WebSocket STOMP
- Feign, HystrixFeign
- Hystrix
- JMS
- JDBC
- Zuul
参考资料:
http://planet.jboss.org/post/opentracing_spring_boot_instrumentation
https://github.com/opentracing-contrib/java-spring-cloud