天天看点

SpringCloud 之 服务追踪 Zipkin的使用

(此次创建的Demo小案例都是基于springBoot【2.0.0.M3】,springCloud【Finchley.M2】创建的,读者若是为了演示正常,请务必保持版本一致)

微服务系统中服务与服务之间的调用有时候是比较繁琐的,尤其是在分析一个请求链为何特别耗时的时候,Zipkin可以说是一大利器,下面展示springcloud中如何集成使用zipkin

1)新建项目,这里直接使用之前创建好的order项目,具体细节不再重复多说。

2)pom文件引入相关配置

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
      
           

引入之后启动项目,我们用postman发送创建订单的请求,可以看到创建成功,如下图:

SpringCloud 之 服务追踪 Zipkin的使用

我们的后台日志可以看到多了如下日志

SpringCloud 之 服务追踪 Zipkin的使用

简单说明 INFO [order,a3adff6c98c158ec,a3adff6c98c158ec,true] 

order:表示属于哪一个项目

a3adff6c98c158ec:是traceId,一条调用链只有一个,相当于全局单次请求唯一ID

a3adff6c98c158ec: spanId:调用编号,相当于调用链每一段的节点ID

true:当为false时候代表以上统计信息不会输出到外部,反之亦然,这里我们需要配置开启,设置为true

3)准备我们的Zipkin,这里我使用Docker安装启动,很简单,一句命令

docker run -d -p 9411:9411 openzipkin/zipkin

关于如何安装Docker,详细可以看【Centos 7 之 安装 Docker 踩坑详解】

启动之后访问  http://192.168.124.32:9411/zipkin/   (前面IP为本机自己虚拟机地址)

SpringCloud 之 服务追踪 Zipkin的使用

4)项目中应如我们Zipkin的相关依赖

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

5)下面我们需要配置,关联我们的项目模块

#我们zipkin的项目地址
spring: 
  zipkin:
    base-url: http://192.168.124.32:9411/
  #1代表百分之百请求都会监控
  sleuth:
    sampler:
      percentage: 1
           

6)启动我们的项目,再次创建订单,查看我们的Zipkin

SpringCloud 之 服务追踪 Zipkin的使用

可以看到我们的Zipkin 界面每一个节点耗时多少都统计出来了

7)额外补充Zipkin的核心四大组件

7.1)Collector(收集器组件):主要负责收集外部系统跟踪信息,转化为Zipkin内部的Span格式。

7.2)Storage(存储组件):主要负责收到的跟踪信息的存储,默认为存储在内存中,同时支持存储到Mysql、Cassandra以及ElasticSearch。

7.3)API(Query): 负责查询Storage中存储的数据,提供简单的JSON API获取数据,主要提供给web UI使用。

7.4)Web UI(展示组件):提供简单的web界面,方便进行跟踪信息的查看以及查询,同时进行相关的分析