美文网首页
Spring Cloud Sleuth和Zipkin

Spring Cloud Sleuth和Zipkin

作者: quanCN | 来源:发表于2020-11-09 16:41 被阅读0次

    Spring Cloud Sleuth

    • 添加依赖

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

      该依赖是一个starter依赖,服务现在就会完成如下功能

      • 检查每个传入的HTTP服务,并确定调用中是否存在Spring Cloud Sleuth跟踪信息。如果Spring Cloud Sleuth跟踪数据确实存在,则将捕获传递到微服务的跟踪信息,并将跟踪信息提供给服务以进行日志记录和处理
      • 将Spring Cloud Sleuth跟踪信息添加到Spring MDC,以便微服务创建的每个日志语句都添加到服务中
      • 将Spring Cloud跟踪信息注入服务发出的每个出站HTTP调用以及Spring消息传递通道的消息中

      注:MDC映射诊断上下文(Mapped Diagnostic Context)

    • 剖析Spring Cloud Sleuth跟踪
      加入依赖后,该服务的任何日志语句现在都包含Spring Cloud Sleuth跟踪信息。如图



      Spring Cloud Sleuth向每一个日志添加以下4条信息

      • 服务的应用程序名称
        这是创建日志条目时所在的应用程序的名称,默认情况下,Spring Cloud Sleuth将应用程序的名称(spring.application.name)作为在跟踪中写入的名称
      • 跟踪ID(trace ID)
        跟踪ID是关联ID的等价术语,它是表示整个事务的唯一编号
      • 跨度ID(span ID)
        跨度ID是表示整个事务中某一部分的唯一ID。参与事务的每一个服务都将具有自己的跨度ID。当与Zipkin集成来可视化事务时,跨度ID尤其重要
      • 是否将跟踪数据发送到Zipkin
        Spring Cloud Sleuth跟踪块末尾的true/false指示器用于指示是否将跟踪信息发送到Zipkin

    日志聚合与Spring Cloud Sleuth

    • 日志聚合方案列表


    • 统一日志记录,以下几点至关重要

      • 确保在服务开发的早期定义和实现日志策略
      • 日志记录是微服务基础设施的一个关键部分
      • 学习日志记录工具

    使用OpenZipkin进行分布式跟踪

    OpenZipkin(也称Zipkin)是一个分布式跟踪平台,可以用于跟踪跨多个服务调用的事务。Zipkin允许开发人员以图形方式查看事务占用的时间量,并分解在调用中涉及的每个微服务所用的时间。

    Zipkin服务器

    • 启动

      官网推荐两种启动方式:

      • Docker
        docker pull openzipkin/zipkin
        docker run -d -p 9411:9411 openzipkin/zipkin
        
      • jar启动
        curl -sSL https://zipkin.io/quickstart.sh | bash -s
        java -jar zipkin.jar
        
    • test
      服务器运行后,可以使用Zipkin UI查看跟踪

      http://localhost:9411/zipkin/
      

      :spring-cloud-sleuth-stream官网已经不推荐使用

    Zipkin + Spring Cloud Sleuth

    • 配置
      <!--sleuth-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-sleuth</artifactId>
      </dependency>
      <!--zipkin-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-sleuth-zipkin</artifactId>
      </dependency>
      
    • 配置服务指向Zipkin
      #zipkin serve url
      spring.zipkin.base-url=http://localhost:9411
      #100%跟踪
      spring.sleuth.sampler.probability=1.0
      
    • 使用Zipkin跟踪事务即可
    • 自定义跨度
      import brave.Span;
      import brave.Tracer;
      
      @Autowired
      private Tracer tracer;
      
      public void fun1(){
          //自定义跨度
          Span newSpan = tracer.nextSpan().name("newSpan").start();
          try (Tracer.SpanInScope ws = tracer.withSpanInScope(newSpan.start())){
              // code
          }finally {
              newSpan.finish();
              log.debug("Adding custom spans");
          }
      }
      

    :Spring Cloud Hoxton.SR8,Spring Boot 2.3.0.RELEASE

    相关文章

      网友评论

          本文标题:Spring Cloud Sleuth和Zipkin

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