初学zipkin搭建链路追踪服务注意事项

1.zipkinserver的搭建

注意:因为关于 Zipkin 的服务端,在Spring Boot 2.x 版本后,官方就不推荐自行定制编译了(自行搭建方式在本文末补充),反而是直接提供了编译好的 jar 包来给我们使用(下载zipkin-server-xxx.jar ,使用JAVA命令启动该JAR,zipkin-server.jar是一个打包好的springBoot应用,springBoot自带tomcat因此只要启动JAR包就可以访问了。 java -jar zipkin-server-xxx.jar 启动完后访问localhost:9411可以查看统计界面)。还有其他两种方式搭建zipkinserver方式,详细情况参看

2.构件网关工程以及服务提供工程,这两个工程作为Zipkin 客户端, 需要将链路数据上传给Zipkin Server,同时它也作为 EurekaClient。

     a.网关pom如下:

<dependencies>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-zipkin</artifactId>

              <version>1.2.1.RELEASE</version>

         </dependency>

         <dependency>

             <groupId>org.springframework.cloud</groupId>

             <artifactId>spring-cloud-starter-zuul</artifactId>

             <version>1.4.4.RELEASE</version>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-eureka</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-test</artifactId>

              <scope>test</scope>

         </dependency>

     </dependencies>

b.网关的配置文件如下:

====================================

server.port=8768

spring.application.name=zipkinzuulclient

#指定 Zipkin Server 地址

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

#通过配置这个参数来决定了日志记录发送给采集器的概率,0-1交给使用者自己配置。开发阶段和运行初期,

#一般配置成1全量收集日志,在默认情况下,该值为 0.1

spring.sleuth.sampler.percentage=1.0

#以下两个配置就可以将以"/sayhi/**"开头的 Url路由指定的url

zuul.routes.sayhi.path=/sayhi/**

zuul.routes.sayhi.url=http://localhost:1000

===================================

c.服务提供工程的pom如下:

<dependencies>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-zipkin</artifactId>

              <version>1.2.1.RELEASE</version>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-eureka</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-test</artifactId>

              <scope>test</scope>

         </dependency>

     </dependencies>

d.服务提供工程的配置

=====================================

spring.application.name=zipkinclient

server.port=1000

#设置服务注册中心的URL,本服务要向该服务注册中心注册自己

eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka

#指定 Zipkin Server 地址

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

#通过配置这个参数来决定了日志记录发送给采集器的概率,0-1交给使用者自己配置。开发阶段和运行初期,

#一般配置成1全量收集日志,在默认情况下,该值 为 0.1

spring.sleuth.sampler.percentage=1.0

============================================

3.完整的项目搭建完毕,依次启动 eurekaserverzipkinserverzipkinzuulclient zipkinclient 在浏览器上访问http://localhost:8768/sayhi/GetTest/getTest 浏览器显示:I  am from :1000    再访问 http://localhost:9411 ,即访问 Zipkin 的展示界面,点击find traces可以看到对应的链路数据,例如请求的调用时间、消耗时间,以及请求调用的链路情况。(注意:需要先访问服务产生链路记录,才能在zipkin界面查到相应的servicenamespanname

 

4.可以在链路中添加自定义数据,本案例在 zipkinzuulclient服务中新建一个过滤器,它的类型为 post 类型, order0,开启拦截。在过滤器的拦截逻辑方法里, 通过 Tracer addTag 方法在本案例中加上了链路的操作人,过滤器中部分代码如下:

@Autowired

Tracer tracer;//首先注入Tracer对象

    @Override

    public Object run() {

//在链路中添加链路操作人员记录

       tracer.addTag("user", "lucus");    

return null;

    }

 

补充:在低版本中也可以自行创建zipkinserver工程,搭建zipkinserver服务,但是官方在2017年6月已经停止使用这种方式,并且要求链路追踪案例中所有案例工程(网关工程、服务提供工程)的搭建都是在低版本中进行,不能使用springboot 2.x,如:

springboot 1.5.9、

spring-cloud.version Dalston.SR1、

spring-cloud-starter-zipkin 1.2.1.RELEASE、

zipkin-server 1.27.0、

zipkin-autoconfigure-ui 1.27.0 等。

a.zipkinserver中引入pom依赖如下:

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

b.低版本中的zipkinserver的配置文件配置内容如下:

====================

#自定义端口号

server.port=9000

#设置服务注册中心的URL,本服务要向该服务注册中心注册自己

eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka

spring.application.name=zipkinserver

====================

c.启动类添加注释如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import zipkin.server.EnableZipkinServer;
@EnableEurekaClient
@EnableZipkinServer
@SpringBootApplication
public class ZipkinServerApplication {

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

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值