springcloud(4) Sleuth分布式链路追踪

Sleuth可以看到微服务间调用的链路,消耗时间,错误。Zipkin用来存储链路信息,并展示数据

一。代码

1.springcloud-eureka-server中

pom.xml

<!-- Zipkin -->
        <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>

application.yml

spring:
  application:
    name: springcloud-eureka-client
  sleuth:
    web:
      client:
        enabled: true #web开启sleuth功能;
    sampler:
      probability: 1.0 # 将采样比例设置为 1.0,也就是全部都需要。默认是 0.1
  zipkin:
    base-url: http://192.168.31.211:9411/ # 指定了 Zipkin 服务器的地址
    sender:
      type: web

2.springcloud-feign-client中pom.xml和application.yml增加相同修改

feign调用了eureka-client中的接口

二。Zipkin-server

docker命令安装

docker run -d -p 9411:9411 openzipkin/zipkin
访问http://192.168.31.211:9411/zipkin/

 启动eureka-server, eureka-client, feign-client三个服务,然后多次访问http://localhost:9600/hello?name=123

就可以看到zipkin中有访问记录

 双击访问记录,可以看到各个微服务消耗的时间

 依赖页面可以看到,微服务间的依赖关系,调用

三,zipkin数据保存到Elasticsearch中  (我这有问题,没有链路数据。。。)

上面的是保存在zipkin内存中,重启后就没有了。可以将链路数据保存到ES中,

安装好ES和kibana后

docker中运行zipkin,连接ES

docker run -d --name zipkin_elasticsearch -p 9411:9411 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.31.211:9200 openzipkin/zipkin

访问http://localhost:9600/hello?name=123后zipkin没有链路数据?????

待解决??

参考:https://www.fangzhipeng.com/springcloud/2019/02/05/sc-sleuth-g.html

          https://www.hangge.com/blog/cache/detail_2810.html

原文地址:https://www.cnblogs.com/t96fxi/p/13789354.html