微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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结束的标识。客户端成功接收到服务器端的响应。

 

二、Zipkin的搭建与整合

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

搭建ZipkinServer

参考:https://www.jb51.cc/article/291572

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

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

三、为用户中心整合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

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

参考:https://www.jb51.cc/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

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

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

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

五、 Zipkin的环境变量

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐