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