1. sleuth(分布式链路跟踪)
trace、span、annotation(标注)
trace可以理解为路线,span理解为站点。annotation用来定义请求的开始和结束(Client sent...)
2. Zipkin
帮助分析追踪数据,提供可视化
使用:新建模块zipkin-server
引入依赖
在zipkin2.7.x以后便不支持自定义服务器需要使用官方的版本或者Docker 但是如果还是要使用的话就得加上这个配置,但不保证bug。
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.8.4</version>
</dependency>
启动类加入注解
@EnableZipkinServer
yml文件配置
management:
metrics:
web:
server:
autoTimeRequests: false
server:
port: 9000
工作方式:spring clound记录分布式链路数据,zipkin上报数据
测试:
在user和power加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
在yml中添加
spring:
zipkin:
base-url: http://localhost:9000 #指定Zipkin server地址
sleuth:
sampler:
probability: 1.0 #request采样的数量的标准 默认是0.1 也即是10% 顾名思义 采取10%的请求数据 因为在分布式系统中,数据量可能会非常大,因此采样非常重要。我们示例数据少最好配置为1全采样
启动
正常访问
停掉power服务
重点:学会分析为什么会出错
由于重启zipkin数据会没有了,所用需要数据持久化
3. Elasticsearch做数据持久化
下载Elasticsearch文件
在sipkin-server引入zipkin与这个的集成依赖
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-storage-elasticsearch-http</artifactId>
<version>2.3.1</version>
</dependency>
进行添加配置yml
zipkin:
storage:
type: elasticsearch
elasticsearch:
cluster: elasticsearch
hosts: http://localhost:9200
index: zipkin
现在重启服务,上次查询的记录仍然存在