1.首先搭建zipkin server
docker run -d -p 9411:9411 openzipkin/zipkin
也可以直接下载jar包运行
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
或者直接运行源码
# get the latest source
git clone https://github.com/openzipkin/zipkin
cd zipkin
# Build the server and also make its dependencies
./mvnw -DskipTests --also-make -pl zipkin-server clean install
# Run the server
java -jar ./zipkin-server/target/zipkin-server-*exec.jar
通过http://localhost:9411/ 就可以看到zipkin页面了
2.在springcloud中集成zipkin
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
此时运行会报错,提示版本问题
3.增加版本信息
<dependencyManagement>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
springboot 2.0以上用 <version>Finchley.SR1</version>
4.增加application.yml配置
spring:
zipkin:
base-url: http://172.31.32.14:9411
enabled: true
locator:
discovery:
enabled: true
另外可以使用spring.sleuth.sampler.percentage来设置采集比例,默认为0.1。
5.调用演示
在各个服务中添加上述内容后,进行调用,可以看到zipkin采集情况
点击可以查看调用详情
6.可能会遇到的问题
可能会遇到一些包的冲突,log4j,HystrixConcurrencyStrategy等。
报错如需要一个单例bean,但给了两个等。
可以使用pom.xml文件中exclusion标签进行排除,或者使用手动指定如下
@Configuration
public class ZipkinConfiguration {
@Autowired
private FeignHystrixConcurrencyStrategyIntellif feignHystrixConcurrencyStrategyIntellif;
@Bean
@Primary
public HystrixConcurrencyStrategy getHystrixStrategy(){
return feignHystrixConcurrencyStrategyIntellif;
}
}
以上