【Spring Cloud】Spring Cloud之Zipkin server搭建以及HTTP收集,分布式服务跟踪(2)

一、搭建步骤

1)新建Spring Boot项目,引入pom坐标

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
            <version>2.10.3</version>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-ui</artifactId>
            <version>2.10.3</version>
        </dependency>
    </dependencies>

2)增加相关配置

spring.application.name: base-zipkin-server
server.port: 9411

#zipkin启动报错无法访问的解决方法
management.metrics.web.server.auto-time-requests: false

3)启动类增加注解

@EnableZipkinServer
@SpringBootApplication
public class BaseZipkinServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(BaseZipkinServerApplication.class, args);
    }

}

4)访问http://lo-calhost:9411/,可以看到、Zipkin管理页面

二、应用服务如何以http的方式,将sleuth生成的traceId等追踪数据发送到Zipkin中

默认是以http的方式进行发送的,相关配置如下

1)增加pom坐标

          <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-sleuth-zipkin</artifactId>
                <version>2.0.3.RELEASE</version>
            </dependency>

注意这里的版本是2.0.3.RELEASE,那么需要Zipkin server的版本依赖的parent版本尽量也要2.0.3.RELEASE。因为传递追踪数据的接口存在升级的情况,比如

在Zipkin Server版本在 1.5左右时,接口地址为/api/v1/spans,版本在2.0时,接口地址为/api/v2/spans。这里只是大致的版本哈。
另外需要注意的是,maven坐标中不能有spring-boot-starter-amqp的坐标,不然不会以HTTP的方式收集,而是以消息队列的方式收集,坐标如下:

        <!--amqp-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

2)增加配置,指定Zipkin服务的地址,

spring:
  zipkin:
    base-url: http://localhost:9411