SpringCloud 2 Finchley 系列 四 分布式链路跟踪 Sleuth 与 Zipkin

Spring Cloud Sleuth为Spring Cloud实施分布式跟踪解决方案,大量借用Dapper,Zipkin和HTrace。
使用 Sleuth , 相当于把错综复杂的 各个服务调用的关系 用日志的形式记录下了
而在结合 Zipkin ,可以可视化的,以 GUI 形式展示请求路线图

Sleuth (请求数据的日志捕获,收集)

Pom依赖

需在各个相互调用的微服务中添加Sleuth依赖
我这里是在client-demo & service-demo-rest 这俩个项目上加的
service-demo-rest 通过Feign调用client-demo,并且对外暴漏一个Api接口 (这块不懂的看前面的文章)

SpringBoot 新版中,spring-cloud-starter-zipkin依赖以及包含了Sleuth
况且后面也会用到Sleuth,所以直接添加一个Zipkin依赖即可
如果没有用到Zipkin服务的情况下 可以单独添加 spring-cloud-starter-sleuth依赖

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

添加依赖后就可以了 ,不需要添加额外Code,
依次启动eureka-server / client-demo / service-demo-feign
调用Api,看到以下日志输出

日志的格式为:[application name, traceId, spanId, export]

application name — 应用的名称,也就是application.properties中的spring.application.name参数配置的属性。
traceId — 为一个请求分配的ID号,用来标识一条请求链路。
spanId — 表示一个基本的工作单元,一个请求可以包含多个步骤,每个步骤都拥有自己的spanId。一个请求包含一个TraceId,多个SpanId
export — 布尔类型。表示是否要将该信息输出到类似Zipkin这样的聚合器进行收集和展示。

看到这里 export 为false,因为我们现在还没有继承ZipKin,这是接下来的工作


Zipkin 整合

在使用 Spring Boot 2.x 版本后,官方就不推荐自行定制编译了,只能使用编译好的 jar 包来搭Zipkin 服务

点击下载zipkin.jar

下载完毕后 java -jar *.jar 启动,默认http端口为 9411

启动完毕, 浏览器访问 localhost:9411 , 居然还做了汉化, 良心框架啊!!
不过这个时候还是没有任何数据的,接下来添加配置

配置

应为上部添加了Zipkin依赖,所以这里不需要添加别的依赖
只需要修改yml配置文件即可,也是各个服务方添加一下配置
base-url 为 zipkin server的 url
probability 将采样比例设置为 1.0,也就是全部都需要。默认是 0.1

spring:
  zipkin:
    base-url: http://localhost:9411/
  sleuth:
    sampler:
      probability: 1.0

配置完之后重启服务器,再次访问 service-demo-feign api

可以看到 export 变成了 true, 同时zipkin点击查找, 也有数据了


Github : https://github.com/marlkiller/SpringCloud-Project

voidm

在黑暗中支撑和平的无名者

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐