美文网首页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