美文网首页Java
springcloud之zipkin

springcloud之zipkin

作者: GG_lyf | 来源:发表于2021-01-08 14:47 被阅读0次

    前言

      这是哥们第一次使用链路追踪,之前在学的时候没有涉及到这一点,但是哥们就是做出来了,哈哈哈哈哈


    开搞

      Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper 的论文设计而来,由 Twitter公司开发贡献。

      其主要功能是聚集来自各个异构系统的实时监控数据,用来追踪微服务架构下的系统延时问题。应用系统需要进行装备(instrument)以向 Zipkin 报告数据。Zipkin 的用户界面可以呈现一幅关联图表,以显示有多少被追踪的请求通过了每一层应用。Zipkin 以 Trace 结构表示对一次请求的追踪,又把每个 Trace 拆分为若干个有依赖关系的 Span。

      在微服务架构中,一次用户请求可能会由后台若干个服务负责处理,那么每个处理请求的服务就可以理解为一个 Span(可以包括 API 服务,缓存服务,数据库服务以及报表服务等)。

      当然这个服务也可能继续请求其他的服务,因此 Span 是一个树形结构,以体现服务之间的调用关系。Zipkin 的用户界面除了可以查看 Span 的依赖关系之外,还以瀑布图的形式显示了每个 Span 的耗时情况,可以一目了然的看到各个服务的性能状况。打开每个 Span,还有更详细的数据以键值对的形式呈现,而且这些数据可以在装备应用的时候自行添加。

    白嫖白嫖

    zipkin内部主要分为四部分:collector、storage、api、ui
      collector:负责将各系统报告过来的追踪数据进行接收
      storage:默认使用Cassandra存储数据,也可以替换为其他存储,例如mysql5.6-5.7,ElasticSearch 2.x和5.x,还有一些第三方的存储
      api:查询服务用来向其他服务提供数据查询的能力,是以json api格式提供
      ui:Web服务是官方默认提供的一个图形用户界面

    1.在现有的springboot项目中创建一个zipkin微服务,并且用的是maven创建的

    2.添加依赖

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>io.zipkin.java</groupId>
      <artifactId>zipkin-server</artifactId>
      <version>2.11.9</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-slf4j-impl</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.zipkin.java</groupId>
      <artifactId>zipkin-autoconfigure-ui</artifactId>
      <version>2.11.9</version>
    </dependency>
    

    3.修改application.yml

    server:
      port: 9003
    eureka:
      instance:
        prefer-ip-address: true
      client:
        service-url:
          defaultZone: http://127.0.0.1:9000/eureka/
    

    4.修改启动器

    @SpringBootApplication
    @EnableEurekaClient
    @EnableZipkinServer //服务端
    public class ZipkinApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(ZipkinApplication.class);
      }
    
    }
    

    5.报错

    java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter containing tag keys [method, status, uri]. The meter you are attempting to register has keys [exception, method, status, uri].
    

    application.yml中添加

    management:
      metrics:
        web:
          server:
            auto-time-requests: false
    

    6.访问http://localhost:9003/zipkin/

    7.客户端添加依赖

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

    8.添加application.yml

    spring:
        zipkin:
        base-url: http://localhost:9003
        sleuth:
            sampler:
                probability: 1.0    # spring.sleuth.sampler.probability=1.0表示以 100% 的概率将链路的数据上传给 Zipkin Server , 在默认情况下 , 该值为0.1
    

    在想要追踪的端口类写上logger日志,在某些接口中打印一下日志
    访问那些端口,刷新这个页面,点击查找

    image.png

    相关文章

      网友评论

        本文标题:springcloud之zipkin

        本文链接:https://www.haomeiwen.com/subject/thjboktx.html