SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

Sleuth是一个SpringCloud的分布式跟踪解决方案

一、术语

  1. Span(跨度):Sleuth的基本工作单元,他用一个64位的id唯一标识。除ID外,span还包含其他数据,例如:描述、时间戳事件、键值对的注解(标签)、spanID、span父ID等
  2. trace(跟踪):一组span组成的树状结构称为trace

Annotation(标注):
    CS(ClientSent客户端发送):客户端发起一个请求,该annotation描述了span的开始;
    SR(ServerReceived服务器端接收):服务器端获得请求并准备处理它;
    SS(ServerSent服务器端发送):该annotation表明完成请求处理(当响应发回客户端时);
    CR(ClientReceived客户端接收):span结束的标识。客户端成功接收到服务器端的响应。
SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

 

二、Zipkin的搭建与整合

Zipkin是Twitter开源的分布式跟踪系统,主要用来收集系统的时序数据,从而追踪系统的调用问题

搭建ZipkinServer

参考:https://www.imooc.com/article/291572

启动ZipkinServer,命令:java -jar zipkin-server-2.12.9-exec.jar

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

 浏览器访问地址:http://localhost:9411

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin 三、为用户中心整合Sleuth和Zipkin

3.1、在pom.xml中添加依赖

<!-- 使用Zipkin之后,Sleuth就不需要了,因为Zipkin已经包含了Sleuth -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

3.2、 在application.yml中添加属性

spring:
  zipkin:
    base-url: http://localhost:9411/
  sleuth:
    sampler:
      #抽样率,默认0.1(10%),设置为1.0表示所有的数据都会上报给Zipkin
      probability: 1.0

3.3、测试:启动用户中心

http://localhost:8081/users/1

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

 3.4、整合Zipkin之后Nacos报错解决

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

参考:https://www.imooc.com/article/291578

只需要添加discoveryClientEnabled属性就可以解决问题

spring:
  zipkin:
    base-url: http://localhost:9411/
  sleuth:
    sampler:
      #抽样率,默认0.1(10%),设置为1.0表示所有的数据都会上报给Zipkin
      probability: 1.0
      #将Zipkin地址设置为绝对地址,nacos不会将其认作是一个服务名称,从而解决nacos报错
      discoveryClientEnabled: false

四、Zipkin数据持久化

Zipkin数据持久化依赖Elasticsearch数据库

下载地址:下载6.8.2

https://www.elastic.co/cn/downloads/past-releases#elasticsearch

启动Elasticsearch,在bin目录执行命令:./elasticsearch

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

 浏览器访问:http://localhost:9200/

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

启动Zipkin时需要指定STORAGE_TYPE和ES_HOSTS环境变量来完成持久化

命令:STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 java -jar zipkin-server-2.12.9-exec.jar

SpringCloud第12讲:调用链监控工具Sleuth+Zipkin

五、 Zipkin的环境变量

环境变量 描述
STORAGE_TYPE 指定存储类型,可选项为elasticsearch、mysql、cassandra等
ES_PIPELINE 指定span被索引之前的pipeline(pipeline是Elasticsearch的概念)
ES_TIMEOUT 连接Elasticsearch的超时时间,单位是毫秒;默认10000(10秒)
ES_INDEX Zipkin所使用的索引(Zipkin会每天建索引)前缀,默认是zipkin
ES_DATA_SEPARATOR Zipkin建立索引的日期分隔符,默认是-
ES_INDEX_SHARDS shard(shard是Elasticsearch的概念)个数,默认5
ES_IMDEX_REPLICAS 副本(replica是Elasticsearch的概念)个数,默认1
ES_USERNAME/ES_PASSWORD Elasticsearch账号密码
ES_HTTP_LOGGING 控制Elasticsearch API的日志级别,可选项为BASIC、HEADERS、BODY

 特别声明:本系列教程(SpringCloudAlibaba)参考自慕课网大目老师提供的网上视频课程,有需要的同学可以自行搜索学习

上一篇:汇编 | 数据处理的两个基本问题


下一篇:es按月归档